/ / Verwenden Sie NSUserDefaults mit suiteName in Swift - ios, swift, nsuserdefaults

Verwenden Sie NSUserDefaults mit suiteName in Swift - ios, swift, nsuserdefaults

Ich habe ein Problem mit NSUserDefaults(suiteName: "group.app-ID").

Ich versuche, eine zu retten NSArray in die NSUserDefaults im Container Anwendung in viewDidLoad().

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

In meiner TodayExtension versuche ich das Array so zu bekommen:

Globale Defenition in Extension ViewController:

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

Im viewDidLoad()

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

Aber defaultsArray ist immer nil.

Die App-Gruppenberechtigung wurde zu allen Zielen hinzugefügt.

Antworten:

5 für die Antwort № 1

Dies hat nichts mit Ihrer Suite zu tun, sondern mit der Tatsache, dass Sie versuchen, ein schnelles Array als NSObject zu speichern. Folgendes funktioniert in Playground und zeigt, wie das geht:

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

Sie können aber auch ein Swift-Array speichern. Sie müssen jedoch einen anderen Accessor verwenden.

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