2013-08-20 38 views
0

在Obj-C中,我試圖將一個數組保存到NSUserDefaults中出現錯誤。我想這是因爲這個數組是多維的,但解決這個問題的最好方法是什麼?我應該編碼/解碼整個對象的字符串,還是應該以某種方式調整我的對象?將多維NSArray保存到NSUserDefaults中的最佳做法

以下是警告信息。我已經用「...」替換了一些匹配對象,以便帖子不會長達100英里。

在此先感謝!

*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
     { 
     items =   (
         { 
       awayName = Celtic; 
       awayScore = 0; 
       channel = TV3Sport1; 
       dateEnd = 1377018000; 
       dateStart = 1377010500; 
       description = "Playoff til Champions League, 1. kamp."; 
       hash = 05ec41bd5cb91fe559349391c007994d; 
       homeName = "Shakhter Karagandy"; 
       homeScore = 0; 
       leagueTitle = "Champions League (kval)"; 
       matchProgress = ""; 
       matchStart = 1377010800; 
       stream = ""; 
      }, 
         { 
       awayName = "Real Sociedad"; 
       awayScore = 0; 
       channel = TV3Sport1; 
       dateEnd = 1377031500; 
       dateStart = 1377023400; 
       description = "Playoff til Champions League, 1. kamp."; 
       hash = be7a7e4763038c6991ba9f6cddfce871; 
       homeName = Lyon; 
       homeScore = 0; 
       leagueTitle = "Champions League (kval)"; 
       matchProgress = ""; 
       matchStart = 1377024300; 
       stream = ""; 
      } 
     ); 
     unix = 1376949600; 
    }, 
     { 
     items =   (
         {...); 
     unix = 1377036000; 
    }, 
     { 
     items =   (...); 
     unix = 1377122400; 
    }, 
     { 
     items =   (...); 
     unix = 1377208800; 
    }, 
     { 
     items =   (...); 
     unix = 1377295200; 
    }, 
     { 
     items =   (...); 
     unix = 1377381600; 
    }, 
     { 
     items =   (...); 
     unix = 1377468000; 
    }, 
     { 
     items =   (...); 
     unix = 1377554400; 
    } 
)' of class '__NSCFArray'. Note that dictionaries and arrays in property lists must also contain only property values. 
+1

看起來像一個字典(或自定義類)的數組給我。你試圖保存的結構是什麼?是否有涉及的自定義類(不實現編碼/解碼)? –

+0

我最近一直在努力做到這一點,並沒有得到任何地方。唯一的選擇是想出一些名稱展平技巧。不過,它看起來像你應該使用SQLite或核心數據... – trojanfoe

+0

所有這些數據來自一個JSON請求,然後我NSJSONSerialized並保存在其中的valueFromKey。 感謝@Valentin Shamardin的文章,我認爲我可以從JSON響應保存NSData而不是響應的一部分。現在它可以工作。 –

回答

1

問題不在於該數組是多維的(或嵌套必然)。問題是整個結構只能包含NSDataNSString,NSNumber,NSDate,NSArrayNSDictionary的實例 - 並且在某個地方您有其他類的實例。您需要刪除該類或將其轉換爲允許的類型之一。

您可能還需要考慮是否存儲如此大量的數據到用戶默認真的是你想要做什麼......

1

你的模型顯得有些沉重和複雜。所以我建議您瞭解iOS中的數據持久性。有用於應用程序之間保存數據幾個不同的選項啓動:

  • NSUserDefaults
  • NSCoding
  • 核心數據
  • 存儲的plist

每種策略都有自己的優勢,我可以」給你一顆銀子彈。這取決於你的模型。

+0

@謝謝你的編輯,對不起我的英文:) –

相關問題