我遇到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已添加到所有目标。
答案 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"]