字典保存到 NSUserDefaults 总是 returns nil

Dictionary saved to NSUserDefaults always returns nil

我正在尝试使用 setObject() 函数将字典保存到 NSUserDefaults,但是当我使用 objectForKey() 函数检索字典时,它 returns 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

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

参见:

当上面的代码在正常的iOS项目中运行时,发现了第二个问题。它抛出一个 NSInvalidArgumentException 因为字典是一个非 属性 列表对象,因为键需要是字符串类型。

Although NSDictionary and CFDictionary objects allow their keys to be objects of any type, if the keys are not string objects, the collections are not property-list objects.

请参阅:Apple 文档中的“What is a Property List?