【发布时间】:2014-08-07 10:06:17
【问题描述】:
我需要创建一个数组来添加这种格式的对象,例如 Swift 中的字典:["key1": "value1", "key2": "value2"]
当我尝试使用NSUserDefaults 保存它时,一切都是正确的,但是当使用密钥读取NSUserDefaults 时,这会崩溃。我的 var obj 需要什么类型的数据?
let def = NSUserDefaults.standardUserDefaults()
var key = "keySave"
var element: AnyObject!
var array1: [AnyObject!] = []
array1.append(["key1": "val1", "key2": "val2"])
array1.append(["key1": "val1", "key2": "val2"])
//save
var savestring : [AnyObject!]
savestring = array1
var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(savestring, forKey: key)
defaults.synchronize()
//read
var obj: [AnyObject!] = []
if(obj != nil){
print("size: ")
print(obj.count) //vary long value confused..
element = obj[0] //crash
print(element.objectForKey("key1"))
}
【问题讨论】:
-
看起来 NSUserDefaults 可以处理字符串但不能处理数组和字典,仅适用于描述文档的 NS* 类型。所以这看起来像是 Swift 中的一个错误。
-
为了稍微超出@Zaph 所说的,我使用 [String] 进行了测试,但它不起作用,但它正在使用 [NSString]。检查我的答案。
标签: swift nsuserdefaults xcode6