2016-12-30 6 views
0

swift 3.0を使用して、オブジェクトの配列をユーザーのデフォルトに追加しようとしています。これは一般的なUserDefaultタイプの1つではないので、オブジェクトまたはオブジェクトの配列(どれを動かすことはできません)が、UserDefaultsに追加されるNSData型に解析される必要があることに気付きました。UserDefaultsにオブジェクトの配列を保存する

これまでの私の試みは以下の通りです:MyVariables.arrayListは、オブジェクトの配列であるオブジェクト

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

以内

最後に、可能であれば、これをUserDefaultsから取得し、オブジェクトの元の1次元配列に変換する方法を知っておくとよいでしょう。

おかげ

リポジトリ: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-に保存-カスタムオブジェクト-iの –

答えて

0

あなたはNSUserDefaultsでカスタム列を保存することはできません。あなたがここにNSUserDefaultsに保存し、その後のNSDataにそれらを変更する必要があることを行うには、コードです。

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() 
    } 
} 
関連する問題