在Swift中使用带有suiteName的NSUserDefaults

Dav*_*ser 3 nsuserdefaults ios swift

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

我尝试将一个NSArray存入NSUserDefaults容器中的应用程序中viewDidLoad().

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

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

扩展ViewController中的Globaly Defenition:

var defaults: NSUserDefaults = NSUserDefaults(suiteName: "group.app-ID")
var defaultsArray: NSArray!
Run Code Online (Sandbox Code Playgroud)

viewDidLoad()

defaultsArray = defaults.objectForKey("bookmarks") as NSArray
Run Code Online (Sandbox Code Playgroud)

defaultsArray总是如此nil.

应用程序组权利已添加到所有目标.

Mun*_*ndi 5

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

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

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

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