Ios 访问NSYI数据
我正在使用以下代码将词典保存到NSUserDefaults中:Ios 访问NSYI数据,ios,objective-c,iphone,xcode,swift,Ios,Objective C,Iphone,Xcode,Swift,我正在使用以下代码将词典保存到NSUserDefaults中: let data = NSKeyedArchiver.archivedDataWithRootObject(self.markerArray) NSUserDefaults.standardUserDefaults().setObject(data, forKey: "pins") 要访问此数据,我使用 let outData = NSUserDefaults.standardUserDefaults().dataForKey("
let data = NSKeyedArchiver.archivedDataWithRootObject(self.markerArray)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "pins")
要访问此数据,我使用
let outData = NSUserDefaults.standardUserDefaults().dataForKey("pins")
let dict = NSKeyedUnarchiver.unarchiveObjectWithData(outData!)
打印dict时,我得到了我想要的:完整的数据字典(示例):
现在,当我想访问一个特定条目时,我得到的是nil
print(dict!["79"]!["name"]!)
print("dict[79] is of type: \(dict!["79"]!.dynamicType)")
如果有帮助的话,未归档字典的类型为\uu NSDictionaryI。
运行以下代码也会打印nil
print(dict!["79"]!["name"]!)
print("dict[79] is of type: \(dict!["79"]!.dynamicType)")
很可能你有类型问题。为什么
79
必须是字符串?我猜这只是一个数字(NSNumber
)
请参见以下示例:
let dict: NSDictionary = [
79: "test 1",
"79": "test 2"
]
print(dict[79]) // prints "test 1"
print(dict["79"]) // prints "test 2"
从变量名markerArray保存字典相当混乱。因为您已经有了
NSKeyedArchiver
和数据,只需将其保存在Documents目录中的文件中即可。这是一个更好的解决方案NSUserDefaults
实际上并不是为数据存储而设计的,它的名称说明了很多:用户默认值。@ArEsiiX您是否尝试过实际检查密钥的类型?e、 g.使用打印(dict.allKeys.map({$0.description+“\($0.dynamicType)”}))
?