2017-11-12 8 views
0

NSTextField에서 NSTextField까지 문자열 값을 전달하고 싶습니다. 나는 이것을 for-in loop에 사용했다. inputField에서 visibleText1으로 값을 전달해야하며 visibleText2에서 visibleText3으로 전달해야합니다. 그러나 그것은 효과가 없습니다.inputField에서 NSTextField로 값을 전달

// Type 'ClosedInterval<String>' does not conform to protocol 'SequenceType' 

방법을 잘 수행하는 방법 :

import Cocoa 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet weak var window: NSWindow! 
    @IBOutlet weak var inputField: NSTextField! 
    @IBOutlet weak var visibleText1: NSTextField! 
    @IBOutlet weak var visibleText2: NSTextField! 
    @IBOutlet weak var visibleText3: NSTextField! 

    func applicationDidFinishLaunching(aNotification: NSNotification) { } 
    func applicationWillTerminate(aNotification: NSNotification) { } 

    @IBAction func applyButton(sender: AnyObject) {  
     for u in (visibleText1.stringValue...visibleText3.stringValue) { 
      visibleText.stringValue[u] = inputField.stringValue 
      inputField.stringValue = "" 
     } 
    } 
} 

엑스 코드는 내게 오류를 준다?

enter image description here

답변

3

다른 텍스트 필드의 문자열 값 범위를 만들 수 없기 때문에 그렇게 할 수 없습니다.

당신은 세 개의 필드의 배열을하고 열거 할 수

:

@IBAction func applyButton(sender: AnyObject) {  
    for field in [visibleText1, visibleText2, visibleText3] { 
     field.stringValue = inputField.stringValue 
    } 
    inputField.stringValue = "" 
} 

또는 반복 루프에서 inputField을 재설정 forEach 기능

@IBAction func applyButton(sender: AnyObject) {  
    [visibleText1, visibleText2, visibleText3].forEach { 
     $0.stringValue = inputField.stringValue 
    } 
    inputField.stringValue = "" 
} 

항상 후 빈 문자열을 적용 할 것 첫 번째 반복.

1

이 몇 가지이 문제,하지만 난 것이다 일이 무엇으로 시작됩니다

import Cocoa 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet weak var window: NSWindow! 
    @IBOutlet weak var inputField: NSTextField! 
    @IBOutlet weak var visibleText1: NSTextField! 
    @IBOutlet weak var visibleText2: NSTextField! 
    @IBOutlet weak var visibleText3: NSTextField! 

    func applicationDidFinishLaunching(aNotification: NSNotification) { } 
    func applicationWillTerminate(aNotification: NSNotification) { } 

    @IBAction func applyButton(sender: AnyObject) {  
     for u in [visibleText1, visibleText2, visibleText3] { 
      u.stringValue = inputField.stringValue 
     } 
    } 
} 

그래서 원래의 문제점은 무엇입니까?

1) (visibleText1.stringValue...visibleText3.stringValue)의 유형은 String ... String이며 의도 한 바가 아닙니다. 배열은 NSTextField이어야합니다.

2) visibleText.stringValue[u]도 아닙니다. 변수 visibleString은 없으며, 심지어 NSTextField인데, 원하는대로 생각하면 .stringValueString이고 배열이 아닙니다.

3) for 루프 내에 inputField.stringValue = ""을 무엇을 설정하고 있습니까? 구조가 작동하면 첫 번째 필드 만 설정됩니다.

4) 오류가 아니지만,이 모든 것을 viewController가 아닌 NSApplicationDelegate 내부에서 수행하는 이유는 무엇입니까?