【问题标题】:NSKeyedUnarchiver decodeObjectForKey returning null classNSKeyedUnarchiver decodeObjectForKey 返回空类
【发布时间】:2012-01-13 07:29:25
【问题描述】:

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

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"];

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

我正在上这样的课......

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

【问题讨论】:

    标签: iphone nskeyedarchiver


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

          NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath];
      

      archieverPath 是 plist 的路径。 你可以通过

      返回对象
      return [dict objectForKey:key];
      

      【讨论】:

      • 哥们!你是哥们吧?我这样做了NSMutableDictionary dict = [unarchiver decodeObjectForKey:@"Presidents"]; 并将其注销。输出为dict = (null);另一方面,plist 的内容是一个数组。但它也返回 null。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-02-15
        • 2010-09-15
        • 2020-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多