2016-12-30 5 views
0

Используя swift 3.0, я пытаюсь добавить массив объектов в значения по умолчанию пользователя. Поскольку это не является одним из обычных типов UserDefault, я понял, что объект или массив объектов (не может решить, какой из них) нужно будет анализировать по типу NSData, чтобы затем быть добавлен в UserDefaults.Сохранение массива объектов в UserDefaults

Моя попытка до сих пор является следующее:

В объекте

func updateDefaults() 
{ 
    let data = NSData(data: MyVariables.arrayList) 
    UserDefaults.standard.set(data, forKey: "ArrayList") 
} 

Где MyVariables.arrayList является массивом объектов.

Наконец, если возможно, было бы неплохо узнать, как извлечь это из UserDefaults и преобразовать его в исходный одномерный массив объектов.

Благодаря

СКЛАД: https://github.com/Clisbo/ModularProject

+0

Может быть, это будет полезно для вас http://stackoverflow.com/questions/29215825/how-to-store-array-list-of-custom-objects-to-nsuserdefaults –

+0

пытались ли вы это? http://stackoverflow.com/questions/6696558/storing-data-to-nsuserdefaults –

+0

Проверьте это http://stackoverflow.com/questions/41355427/attempt-to-insert-non-property-list-object-when -trying-to-save-a-custom-object-i –

ответ

0

Вы не можете сохранить свой собственный массив в NSUserDefaults. Для этого вы должны изменить их на NSData, а затем сохранить в NSUserDefaults. Вот код.

var custemArray: [yourArrayType] { 
    get { 
     if let data = NSUserDefaults.standardUserDefaults().objectForKey("yourKey") as? NSData { 
      let myItem = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? yourType 
     } 
    } 
    set { 
     let data =NSKeyedArchiver.archivedDataWithRootObject(yourObject); 
     NSUserDefaults.standardUserDefaults().setObject(data, forKey: "yourKey") 
     NSUserDefaults.standardUserDefaults().synchronize() 
    } 
} 
Смежные вопросы