jjzjj

NSCoding

全部标签

ios - 为什么没有 NSCoding 的默认实现?

我了解如何使用NSCoding将我的对象转换为归档对象。那不是我的问题。我想知道的是,为什么没有可以处理大约99%情况的NSCoding的默认实现。例如,每次我编写要存档的自定义类时,我都会执行以下操作:实现-(void)encodeWithCoder:和-(id)initWithCoder:。查看我的属性列表,为每个属性编写一对语句(一个编码,一个解码)。如果属性是一个对象,我使用encode/decodeObject方法。如果属性是一个值,我使用相应的编码/解码方法。我总是使用属性的名称作为我的key。我怀疑几乎每个NSCoding的实现都和我的完全一样,唯一的变化是需要操作的特定

ios - 如何测试实现 NSCoding 的简单数据对象类?

我有一个小数据对象需要序列化和反序列化。假设它叫做WeatherDetails,它看起来像这样:WeatherDetails.h@interfaceWeatherDetails:NSObject{@private@protected}#pragmamark-Properties@property(nonatomic,copy)NSString*weatherCode;@property(nonatomic,copy)NSString*weatherDescription;@endWeatherDetails.m#import"WeatherDetails.h"@implementati

ios - NSCoding 和 NSData 是什么关系?

我是iOS编程的新手,我刚刚学习了一些关于保存/加载对象的基础知识。在我的书中有一个将图像保存到文件的示例:NSData*data=UIImageJPEGRepresentation(someImage,0.5);[datawriteToFile:imagePathatomically:YES];我的书还有一个将“essay”对象保存到文件的示例(“essay”对象有一个标题字符串和另一个作者字符串):essay.m符合协议(protocol):-(void)encodeWithCoder:(NSCoder*)aCoder{[aCoderencodeObject:self.essayT

ios - NSCoding 和保存/加载默认值问题

我正在为iPhone应用程序编写一些代码,但在正确加载默认数据时遇到了问题。我的代码基于RayWenderlich的“LearningCocos2d”一书中的一些示例。似乎即使我彻底删除应用程序并尝试从新数据开始,应用程序也不一致地不尝试加载数据,或者错误地认为有数据,并加载空值。我正在使用containsValueForKey来检查值是否存在,然后加载它或加载一些默认值,但即使在全新安装中,containsValueForKey也会查找数据并且不会加载默认值。在xcode的管理器中,我检查了我设备的文件结构和我指定要保存的文档文件夹,看起来它不包含任何文件,所以我不确定它在抓取什么。

ios - 使用 NSUserDefaults 与 Today Extension(小部件)共享一组自定义对象

这是我的第一篇堆栈帖子,所以请在审查我的发帖技巧时保持建设性!基本上,我的问题是我有一组自定义对象需要与今天的扩展程序共享。这些对象代表待办事项列表中的任务,它们的属性用于存储有关每个任务的信息(名称、位置、截止日期、缩略图等)。这些对象存储在一个数组中,该数组用于填充我的待办事项列表。我想要做的就是将这个数组传递给我的小部件,以便我可以填充第二个tableview,它将充当第一个(对于小部件View)的压缩版本。我应该指出我的小部件已正确设置,因为我已将它和包含的应用程序正确链接到“组”中。我还成功地使用NSUserDefaults将NSStrings数组传递给小部件,但是,当我尝试

objective-c - 如何对 NSCoding 进行单元测试?

我有一个iOS应用程序,其中使用NSCoding保存数据,更准确地说是使用NSKeyedArchiver。此应用程序已在AppStore上可用。我正在开发应用程序的第2版,数据模型应该会发生变化。所以我需要处理数据模型迁移。我希望单元测试涵盖它。在我的测试中,我想使用旧数据模型动态生成持久化数据,启动迁移并查看是否一切顺利。目前,归档一个对象是这样的:MyDataModelObject*object=....NSKeyedArchiver*archiver=[[NSKeyedArchiveralloc]initForWritingWithMutableData:data];[archi

objective-c - NS代码 : encoder and decoder for primitive types

我试图为我的模型类创建一个通用的编码器和解码器。我试图找到一种方法来为所有类型的属性调用“编码方法”,无论是对象(NSString、NSNumber、NSArray等)还是原始类型。我看到有人在做以下事情。我想知道这是否是一种正确的方法。属性:@property(assign,nonatomic)intintegerP;@property(assign,nonatomic)floatfloatP;@property(assign,nonatomic)BOOLboolP;编码器和解码器代码:-(void)encodeWithCoder:(NSCoder*)encoder{idobject

ios - 通过 NSSecureCoding 解码 NSArray 时的奇怪行为

我整个下午都在用头撞墙试图弄清楚为什么这个类的解码失败。该类有一个属性是Foo对象的NSArray。Foo符合NSSecureCoding,我已经成功地自行编码和解码了该类。我在initWithCoder中收到一个错误:表示未能解码类Foo。通过一些实验,我发现我需要将[Fooclass]添加到initWithCoder:才能使其工作。也许这会帮助遇到同样问题的其他人。我的问题是,为什么这是必要的?我没有发现苹果文档中有必要这样做的建议。#import"Foo.h"@interfaceMyClass:NSObject@property(nonatomic)NSArray*bunchOf

iOS - EncodeWithCoder - 编码为零

我有一个对象,其属性可能为nil。我应该如何在encodeWithCoder(和decodeWithCoder)中实现它?-(void)encodeWithCoder:(NSCoder*)aCoder{[aCoderencodeObject:_durationforKey:kDuration];//_durationcouldbenil} 最佳答案 Aaron的解决方案简洁明了,清楚地传达了正在发生的事情。但是,我找不到任何信息,是否可以将nil传递给encodeObject:forKey:,因此我对其进行了测试。事实证明你可以安全

ios - 使用 NSCoding 将对象解码为 Int 时抛出的错误是 : fatal error: unexpectedly found nil while unwrapping an Optional value

我在Swift中有一组对象,我正在使用NSCoding将其保存到磁盘,以便下次运行应用程序时可以将它们读入内存。正在保存的项目是一个Volume对象数组。Volume的每个实例都有一个已设置的volumeNumberInt。Volume和QA类都继承自NSObject和NSCoding。如果应用程序在保存任何数据之前运行,它运行良好,当运行编码功能时,我的打印输出确认卷号似乎已正确保存(在我的示例中为1和2)。但是,当我重新加载应用程序时,它会退出并显示错误:fatalerror:在展开可选值时意外发现nil并突出显示:letvolumeNumber=aDecoder.decodeOb