在Swift中使用带有suiteName的NSUserDefaults

时间:2014-08-31 09:58:46

标签: ios swift nsuserdefaults

我遇到NSUserDefaults(suiteName: "group.app-ID")的问题。

我尝试将NSArray保存到NSUserDefaults中容器应用中的viewDidLoad()

var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
defaults.setObject(["One", "Two"], forKey: "bookmarks")
defaults.synchronize()

在我的TodayExtension中,我试着像这样得到数组:

扩展ViewController中的Globaly Defenition:

var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
var defaultsArray: NSArray!

viewDidLoad()

defaultsArray = defaults.objectForKey("bookmarks") as NSArray

defaultsArray始终为nil

App Groups Entitlement已添加到所有目标。

1 个答案:

答案 0 :(得分:5)

这与您的套件无关,但事实上您正在尝试将swift数组存储为NSObject。以下内容适用于Playground,并演示了如何执行此操作:

let defaults = NSUserDefaults()
defaults.setObject(["One", "Two"] as NSArray, forKey: "array")
let myArray = defaults.objectForKey("array") as [String] // ["One", "Two"]

但你也可以存储一个Swift数组。但是,你必须使用不同的访问者。

defaults.setObject(["One", "Two"], forKey: "array")
let myArray = defaults.arrayForKey("array") as [String] // ["One", "Two"]