gpt4 book ai didi

objective-c - 如何在 `NSCoder` 中编码 UIImage

转载 作者:可可西里 更新时间:2023-11-01 03:23:49 25 4
gpt4 key购买 nike

我有一个包含“UIImage”类属性的“用户”对象。

如何将图像与其他属性一起编码并将其保存在 NSUserDefaults 中?

我的理解是我只能对 NSString 进行编码?

例如,目前在我的代码中,我在编码/解码实现中添加了 avatar_url(字符串)。如何将 url 转换为 UIImage 然后对其进行编码?

- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.uid forKey:@"uid"];
[encoder encodeObject:self.avatar_url forKey:@"avatar_url"];
}

- (id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if( self != nil ){
self.uid = [decoder decodeObjectForKey:@"uid"];
self.avatar_url = [decoder decodeObjectForKey:@"avatar_url"];
}
}

最佳答案

更新

正如评论中指出的那样,UIImage 符合NSCoding,因此您可以直接对其进行编码,如下所示:

[encoder encodeObject:image forKey:@"image"];

这样做的好处是它(应该)存储图像的所有属性,包括 scaleimageOrientation,如果它们是未设置为默认值。

但是,它确实有一些您应该注意的风险。如果图像是直接从您的应用程序包加载的,则存档将包含图像名称,但图像数据。如果存档确实包含图像数据,它将采用 PNG 格式,而您可能更喜欢 JPEG 格式,具体取决于您正在编码的图像类型。

原创

使用UIImagePNGRepresentationUIImageJPEGRepresentationUIImage 转换为NSData,然后对NSData 进行编码:

[encoder encodeObject:UIImagePNGRepresentation(self.image) forKey:@"image"];

稍后解码图像:

self.image = [UIImage imageWithData:[decoder decodeObjectForKey:@"image"]];

关于objective-c - 如何在 `NSCoder` 中编码 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7962226/

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