Ios 尝试在NSUserDefaults中存储NSDictionary数组时出错

Ios 尝试在NSUserDefaults中存储NSDictionary数组时出错,ios,objective-c,nsarray,nsdictionary,nsuserdefaults,Ios,Objective C,Nsarray,Nsdictionary,Nsuserdefaults,基本上,我有一个NSDictionary数组,我想存储在NSUserDefaults中。 pageDict是一本本地词典 LyteData是一个用于存储内容的单例类 层次结构从lyteData.textbookDictArray-->lyteData.pagesDictArray-->PageDictArray(NSDictionary) 我得到这个错误: Attempt to set a non-property-list object ( { class

基本上,我有一个NSDictionary数组,我想存储在NSUserDefaults中。 pageDict是一本本地词典 LyteData是一个用于存储内容的单例类 层次结构从lyteData.textbookDictArray-->lyteData.pagesDictArray-->PageDictArray(NSDictionary)

我得到这个错误:

   Attempt to set a non-property-list object (
        {
        class = hb;
        image = "<UIImage: 0x165c43d0>";
        name = fv;
        page = 25;
    }
) as an NSUserDefaults value for key textbookArray
尝试设置非属性列表对象(
{
等级=血红蛋白;
image=“”;
name=fv;
页码=25;
}
)作为键textbookArray的NSUserDefaults值

如何将该数组存储在NSUserDefaults中?

问题是您试图将
UIImage
存储到
NSUserDefaults
,而这是不受支持的。有关解决方案,请参见。

NSUserDefaults
只能存储
前置的
对象(例如NSArray、NSDictionary、NSString等)。如果要在其中存储自定义对象,需要使用技巧。更好的办法是只将路径存储在
NSUserDefaults
中,并将图像存储在应用程序的Documents目录中。我同意Akshit的说法。在NSUserDefaults中存储为NSData意味着您的图像数据总是加载到内存中(NSUserDefaults一次加载整个plist)。
   Attempt to set a non-property-list object (
        {
        class = hb;
        image = "<UIImage: 0x165c43d0>";
        name = fv;
        page = 25;
    }
) as an NSUserDefaults value for key textbookArray