2014-08-31 3 views
2

У меня проблема с NSUserDefaults(suiteName: "group.app-ID").Использование NSUserDefaults с именем suite в Swift

Я пытаюсь сэкономить NSArray в контейнере NSUserDefaults в приложении viewDidLoad().

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

В моей TodayExtension я пытаюсь получить массив так:

Globaly Defenition в добавочном ViewController:

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

В viewDidLoad()

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

Но defaultsArray всегда nil ,

Права на группы приложений были добавлены ко всем Целям.

+0

Вы пытались установить точку останова и посмотреть, что включено в значения по умолчанию? – hoomi

+0

Похоже 'defaults' пуст:' Описание Печать self.defaults: Описание печать * (self.defaults): (NSUserDefaults) [0] = {} ' –

+0

Можете ли вы авторизуйтесь возвращаемое значение 'synchronize'? – hoomi

ответ

5

Это не имеет ничего общего с вашим пакетом, но с тем фактом, что вы пытаетесь сохранить быстрый массив как 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"] 
+0

Спасибо, что сказал мне добавить NSArray после Массив и как [String]. это был вопрос :) –

Смежные вопросы