2016-12-30 145 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-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() 
    } 
}