保存到NSUserDefaults的字典始终返回nil

时间:2016-05-02 05:53:11

标签: swift dictionary nsuserdefaults

我尝试使用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

1 个答案:

答案 0 :(得分:1)

第一个问题是无法在Playground中使用NSUserDefaults。

请参阅:https://stackoverflow.com/a/31210205/3498950

当上述代码在普通的iOS项目中运行时,会发现第二个问题。它抛出NSInvalidArgumentException,因为字典是非属性列表对象,因为键需要是String类型。

  

虽然NSDictionary和CFDictionary对象允许它们的键   任何类型的对象,如果键不是字符串对象,则   集合不是属性列表对象。

请参阅:" What is a Property List?"在Apple Docs中

相关问题