2013-10-12 28 views
0

基本上我有一個我想存儲在NSUserDefaults中的數組。 pageDict是當地的NSDictionary LyteData用來存放東西 層級從lyteData.textbookDictArray ---> lyteData.pagesDictArray ---> pageDict(NSDictionary中)嘗試在NSUserDefaults中存儲nsdictionaries數組時出錯

[pageDict setObject:textbookImage forKey:@"image"]; 
    [pageDict setObject:textbookName forKey:@"name"]; 
    [pageDict setObject:page forKey:@"page"]; 
    [pageDict setObject:nameOfClass forKey:@"class"]; 

    LyteData *lyteData = [LyteData sharedManager]; 
    [lyteData.pagesDictArray addObject:pageDict]; 


    [lyteData.textbookDictArray addObject:lyteData.pagesDictArray]; 
     NSLog(@"array: %@", lyteData.pagesDictArray); 
     NSLog(@"textbook array: %@", lyteData.textbookDictArray); 

    //THIS CODE IS FOR SAVING THE ARRAY OF TEXTBOOKS AS USERDEFAULT 
    [[NSUserDefaults standardUserDefaults] 
    setObject:lyteData.textbookDictArray forKey:@"textbookArray"]; 

我得到這個錯誤去一個Singleton類:

Attempt to set a non-property-list object (
     { 
     class = hb; 
     image = "<UIImage: 0x165c43d0>"; 
     name = fv; 
     page = 25; 
    } 
) as an NSUserDefaults value for key textbookArray 

如何將該數組存儲在NSUserDefaults中?

+1

'NSUserDefaults'只能存儲'premitive'對象(如NSArray,NSDictionary,NSString等),如果你想存儲自定義對象,你需要使用技巧。 [引用我的帖子在這裏存儲自定義類對象](http://stackoverflow.com/questions/16519443/nsmutablearray-not-saved-nsuserdefault/16519672#16519672) –

回答

2

問題是你正試圖存儲一個UIImageNSUserDefaults這是不支持。有關解決方案,請參閱here

+0

存儲爲NSData的作品。謝謝 – Spenciefy

+2

更好的想法是在'NSUserDefaults'中只存儲路徑並將圖像存儲到應用程序的Documents目錄中。 –

+0

我同意Akshit所說的。在NSUserDefaults中作爲一個NSData存儲將意味着你的圖像數據總是被加載到內存中(NSUserDefaults一次加載整個plist)。 –

相關問題