我尝试使用setObject()
函数将字典保存到NSUserDefaults,但当我使用objectForKey()
函数检索字典时,它返回nil
。为什么会这样?
var data = NSUserDefaults.standardUserDefaults();
var scoreboard = [Int : String]()
let scores = "scoresKey"
scoreboard[3] = "spencer"
scoreboard[6] = "brooke"
scoreboard[11] = "jason"
data.setObject(scoreboard, forKey: scores)
data.objectForKey(scores) // Returns nil
答案 0 :(得分:1)
第一个问题是无法在Playground中使用NSUserDefaults。
请参阅:https://stackoverflow.com/a/31210205/3498950
当上述代码在普通的iOS项目中运行时,会发现第二个问题。它抛出NSInvalidArgumentException
,因为字典是非属性列表对象,因为键需要是String类型。
虽然NSDictionary和CFDictionary对象允许它们的键 任何类型的对象,如果键不是字符串对象,则 集合不是属性列表对象。
请参阅:" What is a Property List?"在Apple Docs中