Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 访问NSYI数据_Ios_Objective C_Iphone_Xcode_Swift - Fatal编程技术网

Ios 访问NSYI数据

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("

我正在使用以下代码将词典保存到NSUserDefaults中:

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)”}))