Tho*_*ann 4 cocoa core-data nskeyedarchiver
我需要能够比较使用NSKeyedArchiver创建的plist文件的两个版本.特别是,它是在Xcode中为.xcdatamodeld文件创建的"元素"文件.
由于我自己没有创建此文件,因此无法重新创建其对象模型.相反,我需要了解归档包含哪些类和键控属性.
理想情况下,我想创建一个包含表示类名称及其属性名称和值的字符串的树.我假设所有这些信息都存储在存档中,因此应该可以一般地解析这个存档,对吧?
我已经阅读了有关NSKeyedUnarchiver及其代理人的信息.我只是这样:
取消归档文件数据:
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
unarchiver.delegate = self;
id graph = [unarchiver decodeObjectForKey:@"root"];
Run Code Online (Sandbox Code Playgroud)
这是在请求未知类时调用的委托方法.我在这里返回一个代理类,我希望在其中收集它的值:
- (Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames
{
NSLog(@"wants: %@", name);
return [ObjProxy class];
}
Run Code Online (Sandbox Code Playgroud)
代理类实现
- (id)initWithCoder:(NSCoder *)aDecoder
Run Code Online (Sandbox Code Playgroud)
其中我不知道如何继续,不知道类的实际属性.NSCoder似乎没有提供任何功能来了解可用的密钥.是否有一个技巧可以通过覆盖一些较低级别的objc方法来获取它们?
到目前为止,通过上面显示的这个小代码,在解析"elements"文件时,我只获得了一个类"XDPMModel"的请求,然后就完成了.
任何想法如何使这个工作,即更深入地穿越树?
| 归档时间: |
|
| 查看次数: |
1249 次 |
| 最近记录: |