我有一个继承自 NSObject 的名为 XYZ 的类和一个包含 XYZ 对象的数组。我需要将此数组写入文档目录中的 plist 文件。在尝试 [array writeToFile....] 后,我发现 writeToFile 失败,因为数组包含 XYZ 类的自定义对象。
可能的解决方案是将对象转换为 NSData。实现这一目标的不同方法是什么?我发现 NSCoding 很合适,但无法理解如何使用它。任何帮助将不胜感激。
最佳答案
Ray Wenderlich's blog 上有一个很好的教程其中解释了如何使用 NSCoding。
简单地说,你只需要在你的代码中实现 *-(void)encodeWithCoder:(NSCoder )encode 和 *-(id)initWithCoder:(NSCoder )decoder 方法遵守 NSCoding 协议(protocol)的对象:
// Header
@interface AnObject: NSObject <NSCoding>
// Implementation
- (void) encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:ivar1 forKey:@"ivar1"];
[encoder encodeFloat:ivar2 forKey:@"ivar2"];
}
- (id)initWithCoder:(NSCoder *)decoder {
self = [super initWithCoder:coder];
ivar1 = [[coder decodeObjectForKey:@"ivar1"] retain];
ivar2 = [[coder decodeObjectForKey:@"ivar2"] retain];
return self;
}
也可以查看官方文档here .
关于iphone - 将数组保存到包含自定义对象 iPhone 的 Plist 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111965/