gpt4 book ai didi

cocoa - 如何解析使用 NSKeyedArchiver 创建的外部文件的内容

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

我需要能够比较使用 NSKeyedArchiver 创建的 plist 文件的两个版本。特别是,它是在 Xcode 中为 .xcdatamodeld 文件创建的“elements”文件。

由于我自己没有创建此文件,因此我无法重新创建其对象模型。相反,我需要了解存档包含哪些类和键控属性。

理想情况下,我想创建一个树,其中包含表示类名称及其属性名称和值的字符串。我假设所有这些信息都存储在存档中,因此应该可以通用地解析该存档,对吗?

我读过有关 NSKeyedUnarchiver 及其委托(delegate)的内容。我只得到了这样的:

解压文件数据:

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
unarchiver.delegate = self;
id graph = [unarchiver decodeObjectForKey:@"root"];

这是在请求未知类时调用的委托(delegate)方法。我在这里返回一个代理类,我希望在其中收集它的值:

- (Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames
{
NSLog(@"wants: %@", name);
return [ObjProxy class];
}

代理类实现

- (id)initWithCoder:(NSCoder *)aDecoder

我不知道如何继续,不知道类的实际属性。 NSCoder 似乎没有提供任何学习可用键的功能。有没有办法可以通过重写一些较低级别的 objc 方法来实现它们?

到目前为止,通过上面显示的这一小代码,在解析“elements”文件时,我只收到一个类“XDPMModel”的请求,然后就完成了。

有什么想法可以让它工作,即更深地遍历树吗?

最佳答案

您可以使用PlistExplorer ,它是一个 Cocoa 工具,用于检查 NSKeyedArchiver 编写的文件。

关于cocoa - 如何解析使用 NSKeyedArchiver 创建的外部文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018349/

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