gpt4 book ai didi

cocoa - 如何保存/归档包含自定义对象的 NSMutableArray?

转载 作者:行者123 更新时间:2023-12-03 16:25:51 24 4
gpt4 key购买 nike

我有一个 NSMutableArray *recordsArray,键是 NSString,值是自定义对象:

@interface DictRecord : NSObject{
}
@property (nonatomic, retain) NSString* word;
@property (nonatomic, retain) NSString *wordStatus;

Cocoa:如何保存/归档包含自定义对象的 NSMutableArray

我想保存 NSMutable 数组,最好以非二进制(有点可读)格式保存。

我已阅读文档并将编码方法添加到 DictRecord 中:

- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject: _word forKey:@"word" ];
[coder encodeObject: _wordStatus forKey:@"wordStatus" ];
}
- (id) initWithCoder: (NSCoder *) coder
{
self = [super init];
if (self) {
self.word = [coder decodeObjectForKey:@"word"];
self.wordStatus = [coder decodeObjectForKey:@"wordStatus"];
}

然后我尝试使用以下方式保存:

[recordsArray writeToFile:filePath atomically:YES];

文件已保存,但我可以看到它是空的。

谁能告诉我我省略了哪些步骤,或者我是否采取了错误的方式。

谢谢

最佳答案

这有点令人困惑,但 NSCoding 和 NSArray 和 NSDictionary 属性列表方法是两个不同的东西。

你有两个选择:

  1. 使用 NSCoding。这是an answer它展示了如何正确获取对数组内容调用的编码方法。
  2. 使用-[NSArray writeToFile:atomically:]。不要实现 -initWithCoder:-decodeWithCoder,而是创建您自己的两个方法:-dictionaryValue-initWithDictionary: >。要进行写入,请迭代模型对象数组,构建新的字典数组,然后对其调用 -writeToFile:atomically: 。要读取,请调用 NSArray 读取方法之一,获取其中包含的字典,然后对每个方法调用 -initWithDictionary:

如果您想要一个人类可读的 plist,第二个选项是一个不错的选择。

关于cocoa - 如何保存/归档包含自定义对象的 NSMutableArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836554/

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