NSData *data = UIImageJPEGRepresentation(someImage,0.5);[data writetofile:imagePath atomically:YES];
我的书还有一个将“论文”对象保存到文件的例子(“论文”对象有一个标题字符串和另一个作者字符串):
essay.m符合< NSCoding>协议:
- (voID) encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.essayTitle forKey:@"essayTitle"]; [aCoder encodeObject:self.essayAuthor forKey:@"essayAuthor"];}- (instancetype) initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { _essayTitle = [aDecoder decodeObjectForKey:@"essayTitle"]; _essayAuthor = [aDecoder decodeObjectForKey:@"essayAuthor"]; } return self;}
在essayStore.m中:
[NSKeyedArchiver archiveRootObject:self.myEssay tofile:somePath];
我有三个问题:
>我何时应该使用NSData将对象保存到文件/文件中,何时应该符合< NSCoding>协议将对象保存到文件/文件?
>我应该何时将所有对象保存到单个文件中?何时应为每个对象保存一个文件?
>如果我的论文对象中有图像,我该如何将其与图像一起保存?
谢谢!
解决方法 1. NSCoding是一种协议,是将数据保存到文件的方法之一.优点是,如果使用此方法,您可以存储对象.如 Apple class reference中所述,NSData通常用于数据存储,在分布式对象应用程序中也很有用,其中数据对象中包含的数据可以在应用程序之间复制或移动.
2.这取决于您保存数据的需要.它通常足以将所有对象存储在单个文件中,这些通常是表示实体的对象.
3.您可以参考以下教程:
– 列出项目NSCoding Tutorial for iOS
编辑:
如果您想了解编码图像,请查看此stackoverflow answer.
虽然我不喜欢编码图像.需要将复杂对象转换为@Anoop VaIDya在评论中提到的原始数据.
是的,可以编码由您创建的类的对象.但是你必须在其中实现NSCoding协议.以下链接是两级编码的恰当示例,如您所要求的:
> Archiving Objective-C Objects with NSCoding
希望这可以帮助!
总结以上是内存溢出为你收集整理的ios – NSCoding和NSData之间有什么关系?全部内容,希望文章能够帮你解决ios – NSCoding和NSData之间有什么关系?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)