NSUserDefaults returns NSDictionary 而不是 NSArray
NSUserDefaults returns NSDictionary instead of NSArray
这是我存储 NSArray 的方式:
let defaults = NSUserDefaults.standardUserDefaults()
for item in data as NSArray {
if let id = item["id"] as? String {
defaults.setObject(item, forKey: "Content:" + id);
defaults.synchronize();
}
}
但是当我试图获取存储的数据时,我不得不使用
if let content = defaults.dictionaryForKey("Content:" + contentID) {}
否则内容为空。但是,如果有一个简单的方法可以将这个 NSDictionary 放入 NSArray 中(因为在其他一些 类 中需要它,数据被移交给它)。
我存储NSArray的方式有问题吗?顺便说一句:它是一个数组,其中的键是字符串。类似于 String:AnyObject.
提前致谢!
最佳
斯特凡
我认为您的对象在用户默认设置中设置得很好,但是您在用户默认设置中保存字典(因为您的 item
是字典),这就是您必须使用 defaults.dictionaryForKey
的原因。您可以使用
存储整个数组
defaults.setObject(data as NSArray, forKey: "Some key");
行
if let id = item["id"] as? String
高度怀疑。为什么数组项可以从键 "id" 生成值?所以我认为你不确定 item 是 Array 还是 Dictionary。您将 Dictionary 存储到 userdefaults 只是因为这一行
for item in data as NSArray
是成功的。这是一种错误的做法。为清楚起见,请尝试以下代码。
let mydictionary = NSMutableDictionary()
mydictionary.setValue("123", forKey: "abc")
let data = [mydictionary]
for item in data as NSArray {
if let id = item["id"] as? String {
}
}
这里我将NSMutableDictionary 存储到数据中。它正在通过
for item in data as NSArray
希望你明白。
这是我存储 NSArray 的方式:
let defaults = NSUserDefaults.standardUserDefaults()
for item in data as NSArray {
if let id = item["id"] as? String {
defaults.setObject(item, forKey: "Content:" + id);
defaults.synchronize();
}
}
但是当我试图获取存储的数据时,我不得不使用
if let content = defaults.dictionaryForKey("Content:" + contentID) {}
否则内容为空。但是,如果有一个简单的方法可以将这个 NSDictionary 放入 NSArray 中(因为在其他一些 类 中需要它,数据被移交给它)。
我存储NSArray的方式有问题吗?顺便说一句:它是一个数组,其中的键是字符串。类似于 String:AnyObject.
提前致谢!
最佳 斯特凡
我认为您的对象在用户默认设置中设置得很好,但是您在用户默认设置中保存字典(因为您的 item
是字典),这就是您必须使用 defaults.dictionaryForKey
的原因。您可以使用
defaults.setObject(data as NSArray, forKey: "Some key");
行
if let id = item["id"] as? String
高度怀疑。为什么数组项可以从键 "id" 生成值?所以我认为你不确定 item 是 Array 还是 Dictionary。您将 Dictionary 存储到 userdefaults 只是因为这一行
for item in data as NSArray
是成功的。这是一种错误的做法。为清楚起见,请尝试以下代码。
let mydictionary = NSMutableDictionary()
mydictionary.setValue("123", forKey: "abc")
let data = [mydictionary]
for item in data as NSArray {
if let id = item["id"] as? String {
}
}
这里我将NSMutableDictionary 存储到数据中。它正在通过
for item in data as NSArray
希望你明白。