我正在尝试使用 [NSKeyedArchiver archivedDataWithRootObject:dataArray]; 保存一个包含由图像和字符串组成的模型的数组;但此方法在调用此方法 2-3 次后返回 nil。
这仅在我尝试存档的模型包含图像时发生。
我检查了数据数组不是零。
下面是我正在使用的代码:
@implementation ImagesModel
- (id)initWithCoderNSCoder *)coder{
if(self = [super init]){
self.image = [[UIImage alloc]initWithData:[coder decodeObjectForKey"image"]];
self.urlString = [coder decodeObjectForKey"urlString"];
}
return self;
}
- (void)encodeWithCoderNSCoder *)coder
{
[coder encodeObject:UIImagePNGRepresentation(self.image) forKey"image"];
[coder encodeObject:self.urlString forKey"urlString"];
}
+ (NSDictionary *)getObjectMapper {
if (!mapperDictionary) {
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:[PropertyMapping mappingForSimpleTypeWithMappedKeyName"image"] forKey"image"];
[dictionary setObject:[PropertyMapping mappingForSimpleTypeWithMappedKeyName"urlString"] forKey"urlString"];
mapperDictionary = [dictionary copy];
}
return mapperDictionary;
}
- (NSData)ArchiveData {
if (!dataArray){
return NO; //nothing to save
}
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dataArray]; //Return Nil
}
Best Answer-推荐答案 strong>
这取决于您加载图像的方式。
这是一个可能对您有所帮助的答案:
How to encode a UIImage in an `NSCoder`
此外,如果您想存储 .JPEG 图像,您可能需要使用 UIImageJPEGRepresentation。
关于ios - NSKeyedArchiver archivedDataWithRootObject 在传递图像模型数组时返回 nil,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/38511741/
|