NSKeyedUnarchiver debugObjectForKey 返回 null 类

发布于 2024-12-26 11:51:32 字数 719 浏览 1 评论 0原文

我有一个存档存储在“Presidents.plist”文件中。它存在,我可以使用 pathForResource 方法找到它。而且我也使用 NSData 的 initWithContentsOfFile 方法获取数据来检索数据。现在的问题就出在这行代码上。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Presidents"
                                                 ofType:@"plist"];
NSData *data; 
NSKeyedUnarchiver *unarchiver;
data = [[NSData alloc] initWithContentsOfFile:path];
unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
id presidents = [unarchiver decodeObjectForKey:@"Presidents"];

由于某种原因,它返回一个 null 类,而不是我预期的 NSArray 类。谁能告诉我发生这种情况的原因以及如何解决这个困境?

我的课是这样的...

NSLog(@"presidents class = %@", NSStringFromClass([presidents class]));

I have an archive which is stored in "Presidents.plist" file. It exist and I can locate it using pathForResource method. And also I do get the data using initWithContentsOfFile method of NSData to retrieve the data. The problem now is in this lines of code.

NSString *path = [[NSBundle mainBundle] pathForResource:@"Presidents"
                                                 ofType:@"plist"];
NSData *data; 
NSKeyedUnarchiver *unarchiver;
data = [[NSData alloc] initWithContentsOfFile:path];
unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
id presidents = [unarchiver decodeObjectForKey:@"Presidents"];

For some reason it is returning a null class instead of my expected NSArray class. Can anyone tell me the reason this is happening and how can I solve this dilemma?

I'm getting the class like this...

NSLog(@"presidents class = %@", NSStringFromClass([presidents class]));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

青萝楚歌 2025-01-02 11:51:33

您可以通过以下方式访问该对象:

    NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath];

archieverPath 是 plist 的路径。
你可以通过以下方式返回对象

return [dict objectForKey:key];

You can access the object by:

    NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath];

archieverPath is the path of the plist.
and you can return the object by

return [dict objectForKey:key];
趁年轻赶紧闹 2025-01-02 11:51:33

在最新版本的 iOS 中,pList 的根对象不能是数组。我最近遇到了这个问题。尝试使用字典代替。

In more recent versions of iOS the root object of a pList must not be an array. I had this problem recently. Try using a dictionary instead.

英雄似剑 2025-01-02 11:51:32

我遇到了同样的问题,方法2帮助了我。

使用 TextWrangler 将 Presidents.plist 中的“BIDPresident”更改为“President”或尝试我的文件 http://www.fileswap.com/dl/o29Sxm48g0/Presidents.plist.html

I had the same problem, Method 2 helped me.

Change the "BIDPresident" to the "President" in Presidents.plist using TextWrangler or try my file http://www.fileswap.com/dl/o29Sxm48g0/Presidents.plist.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文