【问题标题】:Swift: save text field in an arraySwift:将文本字段保存在数组中
【发布时间】:2015-08-20 13:19:29
【问题描述】:

如何将2个文本字段的文本保存在一个数组中?

这是我尝试过的。我使用 println 检查值是否在数组中。但它似乎不起作用。

谁能解释一下,请解释一下每个步骤。谢谢你

1- 我创建了一个 swift 文件: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

}

【问题讨论】:

    标签: arrays swift class


    【解决方案1】:

    这是 Swift 中的预期行为。 Swift 对象默认没有描述属性,所以println 默认打印类名。

    您的班级可以采用Printable 协议(在 Swift 2 中已重命名为 CustomStringConvertible)以提供更详细的打印输出:

    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}]"
    

    【讨论】:

    • 我是编程新手。我不明白。你把它放在 novaClass.swift 中,对吗?然后如何检查?
    • @Nrc 用一个例子更新了我的答案。基本上,如果你 println 你的数组,它将把 description 的结果放在那里而不是 _.novaClass
    【解决方案2】:

    你应该检查一下

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

    将数组作为对象打印只会打印其标题

    【讨论】:

    • 好的。这将打印文本字段的内容。但只有第一个值。我可以检查数组是否获得了之前输入的所有值吗? (直到应用程序。当然是打开的)
    • 当然现在它会打印第一组值,因为它的索引为 0。您可以通过 nouArray.count 检查您需要的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2018-06-10
    • 2015-03-10
    • 2015-12-11
    相关资源
    最近更新 更多