2015-08-20 3 views
1

Как сохранить текст из 2 текстовых полей в массиве?Swift: сохранить текстовое поле в массиве

Это то, что я пробовал. Я использую println, чтобы проверить, находятся ли значения в массиве. Но, похоже, это не сработает.

Может кто-нибудь объяснить это и, пожалуйста, объясните каждый шаг. Спасибо

1- Я создаю быстрый файл: novaClass.swift. Я создаю внутри-структуру

struct novaClass { 
    var img : String 
    var text : String 
} 

2- ViewController.swift объявляет массив

var nouArray = [novaClass]() 

3- сохранить текстовое поле в массиве

@IBAction func save(sender: AnyObject) { 

    //I put the text of 2 text fields in the array 
    var nouText = novaClass(img: textField1.text, text: textField2.text) 
    nouArray.append(nouText) 

    //I check the array 
    println(nouArray) // this gives "[_.novaClass]" I do not understand 

} 

ответ

1

Вы должны проверить его

println(nouArray[0].text) 
println(nouArray[0].img) 

Печатный массив как объект ct напечатает только его заголовок

+0

Ok. Это печатает содержимое текстовых полей. Но только первые значения. Могу ли я проверить, получил ли массив все введенные ранее значения? (до тех пор, пока приложение не было открыто) – Nrc

+0

Теперь он печатает первую pait значений, потому что ее индекс в 0. Вы можете проверить, что вам нужно от nouArray.count, возможно, – SwiftStudier

2

Это ожидаемое поведение в Swift. Объекты Swift не имеют свойства описания по умолчанию, поэтому println по умолчанию печатает имя класса.

Ваш класс может принять Printable протокол (который был переименован в CustomStringConvertible в Swift 2), чтобы обеспечить более подробные распечатки:

struct novaClass: Printable { 

    var img : String 
    var text : String 

    var description: String { 
     get { 
      return "{img: \(img), text: \(text)}" 
     } 
    } 
} 

Теперь попробуйте:

var array = [novaClass]() 
let x = novaClass(img: "foo", text: "bar") 
let y = novaClass(img: "foo2", text: "bar2") 
array.append(x) 
array.append(y) 
println(array) // will print: "[{img: foo, text: bar},{img: foo2, text: bar2}]" 
+0

Я очень новичок в программировании. Я не понимаю. Вы положили это в novaClass.swift, это правильно? а затем, как проверить? – Nrc

+0

@Nrc обновил мой ответ на примере. В принципе, если вы 'println' ваш массив, он поместит там результат' description' вместо '_.novaClass' –

Смежные вопросы