• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 17:03:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试使用 [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-推荐答案


这取决于您加载图像的方式。 这是一个可能对您有所帮助的答案:

How to encode a UIImage in an `NSCoder`

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap