0

我有NSMutuableArrayUIImages 。当试图将他救到 时userDefaults,我收到警告。如果它是一个字符串数组,它的工作正常。

//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

1 回答 1

4

从文档中NSUserDefaults

NSUserDefaults 类提供方便的方法来访问常见类型,例如浮点数、双精度数、整数、布尔值和 URL。默认对象必须是一个属性列表,即以下实例(或集合实例的组合):NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。如果要存储任何其他类型的对象,通常应该将其归档以创建 NSData 的实例。有关更多详细信息,请参阅首选项和设置编程指南。

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

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

于 2013-02-27T19:14:34.430 回答