我一直试图从保存为用户默认值的数组中读取数据,但对象类型会导致冲突。

if NSUserDefaults.standardUserDefaults().valueForKey("data")==nil{
        let arrya : Array = ["Apple", "Apricot", "Banana", "Blueberry", "Cantaloupe", "Cherry",
            "Clementine", "Coconut", "Cranberry", "Fig", "Grape", "Grapefruit",
            "Kiwi fruit", "Lemon", "Lime", "Lychee", "Mandarine", "Mango",
            "Melon", "Nectarine", "Olive", "Orange", "Papaya", "Peach",
            "Pear", "Pineapple", "Raspberry", "Strawberry"]
        NSUserDefaults.standardUserDefaults().setObject(arrya, forKey: "data")
}

var data = NSUserDefaults.standardUserDefaults().objectForKey("data")

我使用objectForKey而不是valueForKey是因为this问题的答案。
这个问题可以回答我的问题,但是。。。好。。。没有。我还有问题。例如:
尝试
data.count

返回错误:
Value of type 'AnyObject?' not unwrapped; did you mean to use '!' or '?'?

尝试:
cell.textLabel?.text = data[0]

返回错误:
Could not find an overload for 'subscript' that accepts supplied arguments

为什么类型不兼容?我希望从用户默认值中检索的内容与以下类型相同:
["hola", "alo", "ya", "shalom", bounjour", 1, 3, "ai"]

非常感谢您的回复。欢迎光临,不胜感激!

最佳答案

转换为数组

var data = NSUserDefaults.standardUserDefaults().objectForKey("data") as! Array<String>

最好使用if let来检查铸造是否失败

关于ios - 编辑保存为用户默认值的数组SWIFT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31985394/

10-11 07:11