2016-10-18 83 views
-2

我剛剛開始學習Swift。我觀看了一個關於基本swift編程入門的視頻,並將教師代碼直接複製到我的Xcode中。但是,我的代碼中出現錯誤,他沒有收到。我三重檢查了我做了同樣的事情。代碼如下。最後一行給出了主題中的錯誤。Swift Error:無法用列表類型'(String)'的參數調用'append'

var items:[String] = [] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

@IBAction func additem(sender: AnyObject) { 
    if (txtinput.text! == ""){ 
     return 
    } 
    items.append(txtinput.text!) 
    txtoutput.text = "" 
    for item in items { 
     txtoutput.text.append("\(item)\n") 
+1

什麼版本的Xcode和你使用的是什麼版本的Swift? – rmaddy

+1

什麼是'txtoutput'? –

回答

1

推測textString類型。 String沒有名爲append的方法。通常你會使用...

txtoutput.text = txtoutput.text + "\(item)\n" // or 
txtoutput.text += "\(item)\n" 

但是,也可以編寫一個擴展,這樣就可以調用append。也許這就是你看到的樣本中存在的東西?

extension String { 
    mutating func append(str: String) { 
     self = self + str 
    } 
} 
+0

是的。花了我太久。 upvote for you –

+0

請注意,在Swift 3中,'String' *確實有一個['append(_:)'](https://developer.apple.com/reference/swift/string/1641225-append)方法。 – Hamish

1

您需要將字符串添加到您現有的字符串。 所以在你的情況下:

@IBAction func additem(sender: AnyObject) { 
    if (txtinput.text! == ""){ 
     return 
    } 
    items.append(txtinput.text!) 
    txtoutput.text = "" 

    for item in items { 
     txtoutput.text = (txtoutput.text)! + "\(item)\n" 
    } 
} 
+0

該死的...帶了我太久......邁克爾的速度更快了:) –

+0

但是對於你來說也是一個好消息,因爲OP可能有一個可選項。 – Michael

相關問題