gpt4 book ai didi

ios - NSKeyedArchiver archivedDataWithRootObject 在传递图像模型数组时返回 nil

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:55 25 4
gpt4 key购买 nike

我正在尝试使用 [NSKeyedArchiver archivedDataWithRootObject:dataArray] 保存一个包含模型的数组,该模型由图像和字符串组成;但此方法在调用此方法 2-3 次后返回 nil。仅当我尝试存档的模型包含图像时才会发生这种情况。我检查过数据数组不是零。下面是我正在使用的代码:

@implementation ImagesModel

- (id)initWithCoder:(NSCoder *)coder{
if(self = [super init]){
self.image = [[UIImage alloc]initWithData:[coder decodeObjectForKey:@"image"]];
self.urlString = [coder decodeObjectForKey:@"urlString"];
}
return self;
}

- (void)encodeWithCoder:(NSCoder *)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
}

最佳答案

这取决于您加载图片的方式。以下是可能对您有所帮助的答案:

How to encode a UIImage in an `NSCoder`

此外,如果您想存储 .JPEG 图像,您可能需要使用 UIImageJPEGRepresentation。

关于ios - NSKeyedArchiver archivedDataWithRootObject 在传递图像模型数组时返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com