2013-02-27 29 views
0

我有UIImages的NSMutuableArray。当试图将他保存到userDefaults时,我收到警告。 如果它的字符串数组,它的工作正常。将NSMutuableArray保存为NSUserDefault会发出警告

//save to memory 
    NSMutableArray *savedImages=[[NSMutableArray alloc]init]; 
    for(int j=0;j<[selectedButtonsTags count];j++) 
     [savedImages addObject:[assets objectAtIndex:[[selectedButtonsTags objectAtIndex:j] intValue]]]; 
    [memoryInstance setTempImagesToSend:savedImages]; //here save to NSUserDefault 
    [savedImages release]; 

警告:

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 

为什么userdefault关心哪些对象我的数组保存?

回答

4

从文档为NSUserDefaults

的类NSUserDefaults的提供用于访问公共类型,例如浮标方便的方法,双打,整数,布尔值,和URL。一个默认对象必须是一个属性列表,也就是一个实例(或集合的实例组合):NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果你想存储任何其他类型的对象,你通常应该将其存档以创建一个NSData实例。有关更多详情,请参阅首选项和设置编程指南。

您会注意到UIImage不在列表中。您必须首先将UIImage转换为NSData对象,然后才能将图像存储在NSUserDefaults中。

但是,您不应该使用NSUserDefaults来存储大量的二进制数据。相反,将图像写入文件系统。将它们存储在应用程序沙箱中的适当文件夹中。如果需要,您可以将文件名存储在NSUserDefaults中。