#swift #string
#swift #строка
Вопрос:
Я только начинаю изучать Swift. Я посмотрел видео о начале работы с базовым программированием swift и скопировал код инструктора непосредственно в свой Xcode. Однако я получаю ошибку в своем коде, которую он не получил в своем. Я трижды проверил, что я сделал все то же самое. Код приведен ниже. Последняя строка выдает ошибку в теме.
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 вы используете?
2. и что такое
txtoutput
?
Ответ №1:
Предположительно text
имеет тип String
. String
не вызывается метод append
. Обычно вы бы использовали…
txtoutput.text = txtoutput.text "(item)n" // or
txtoutput.text = "(item)n"
Однако также возможно написать расширение, чтобы вы могли вызывать append
. Возможно, это то, что существовало в примере, который вы видели?
extension String {
mutating func append(str: String) {
self = self str
}
}
Комментарии:
1.Обратите внимание, что в Swift 3
String
есть метод.append(_:)
Ответ №2:
Вам нужно добавить строку к существующей строке. Итак, в вашем случае:
@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"
}
}
Комментарии:
1. черт возьми … заняло у меня слишком много времени… Майкл был быстрее 🙂
2. Но и для вас тоже, поскольку у OP, вероятно, есть необязательный параметр.