iphone - 将数组保存到包含自定义对象 iPhone 的 Plist 文件

标签 iphone objective-c ios cocoa-touch nsdocumentdirectory

我有一个继承自 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/

相关文章:

ios - snapshotViewAfterScreenUpdates 创建空白图像

iphone - 调用 ALAssetReprsentation 的元数据方法几百次都会失败

iphone - 使用 -viewWithTag : when several views have same . 标签时返回什么 UIView?

objective-c - NSOperation - main 方法在主线程上运行?

ios - 如何在 Objective-C 中表示表格数据

ios - SwiftUI 中的 Admob 原生广告

ios - 静音时播放声音

iphone - 使用 uiwebview 创建一个富文本 uitableviewcell

objective-c - 用于 objective-c 应用程序的 Google API

ios - 为什么插入导航会创建无法识别的选择器?