gpt4 book ai didi

ios - 如何从 plist 文件中读取自定义对象数组?

转载 作者:行者123 更新时间:2023-11-29 10:39:14 25 4
gpt4 key购买 nike

我读过很多有关如何保存自定义对象的问题,但我不知道。我不知道下一步该怎么做,这就是我问问题的原因。

在 plist 文件中保存自定义对象

NSLog(@"%@",self.drawingView.pathArray);
NSData *arrayData = [NSKeyedArchiver archivedDataWithRootObject:self.drawingView.pathArray];
[arrayData writeToFile:[DOCUMENTPATH stringByAppendingPathComponent:@"1.plist"] atomically:YES];

控制台 o/p

(
"<PenTool: 0xa031f80;>",
"<PenTool: 0x8b2b360;>",
"<PenTool: 0xa03aca0;>",
"<PenTool: 0x8b38780;>"
)

上面的代码工作正常。保存在 plist 中。现在我想从那个 plist 中取回所有对象。

从 plist 读取

NSData *data=[NSData dataWithContentsOfFile:[DOCUMENTPATH stringByAppendingPathComponent:@"1.plist"]];
self.pathArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];

我在这里得到一个数据。但不是数组。我读过相关内容,但有人说您必须取消归档 数据。但我不知道如何取消存档。

编辑

我知道我必须使用以下两种方法但不知道。

- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
return self;
}

- (void)encodeWithCoder:(NSCoder *)encoder {
}

有没有其他方法可以在文件中存储自定义对象。

最佳答案

您的PenTool 类需要实现NSCoding。这描述了 Archives and Serialisations Programming Guide

question有几个有用的例子。

这些代码片段来自 Archives and Serializations Programming Guide,键是字符串。

- (void)encodeWithCoder:(NSCoder *)coder {
[coder encodeObject:self.firstName forKey:ASCPersonFirstName];
[coder encodeObject:self.lastName forKey:ASCPersonLastName];
[coder encodeFloat:self.height forKey:ASCPersonHeight];
}


- (id)initWithCoder:(NSCoder *)coder {
self = [super init];
if (self) {
_firstName = [coder decodeObjectForKey:ASCPersonFirstName];
_lastName = [coder decodeObjectForKey:ASCPersonLastName];
_height = [coder decodeFloatForKey:ASCPersonHeight];
}
return self;
}

关于ios - 如何从 plist 文件中读取自定义对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322855/

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