【问题标题】:Why does NSMutableArray Count crash my app?为什么 NSMutableArray Count 会使我的应用程序崩溃?
【发布时间】:2010-02-08 16:53:40
【问题描述】:

我遇到了一个问题。每次我启动我的应用程序时,它都会崩溃。这是我的代码。 调试器说:[list count] 使应用程序崩溃。我不知道。 NSLog(@"%@", self.list); 按预期给了我一件物品...

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  data = [[NSData alloc] initWithContentsOfFile:filePath];
  unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

  NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"];
  [unarchiver finishDecoding];
  [unarchiver release];
  [data release];

}

  self.list = array;
  NSLog(@"%@", self.list);
  NSLog(@"count %i", [list count]);

打开的存档是这样创建的:

Adding *adding = [[Adding alloc] init];
adding.nummer = 1;
adding.stadt = stadt.text;


NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]
                             initForWritingWithMutableData:data];
[archiver encodeObject:adding forKey:@"TOWN"];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];

如果您需要任何其他代码,请告诉我。我会非常感谢任何帮助:)

【问题讨论】:

  • ivar列表是如何声明的?
  • 你能显示定义列表属性的代码吗?它是保留财产吗?
  • 对不起。是的,它被保留了。 NSMutableArray *list; ... @property (nonatomic, retain) NSMutableArray *list;
  • [self.list count] 是否崩溃(list 和 self.list 是否相同?)
  • 是的。一样的。两者都崩溃了......

标签: iphone crash count nsmutablearray nskeyedarchiver


【解决方案1】:

我认为问题在于您在此处对添加类进行编码:

[archiver encodeObject:adding forKey:@"TOWN"];

这还不是 NSMutableArray,当您解码时,您正试图在此处将其作为 NSMutableArray 取回:

NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"];

我猜你的类添加不是一个数组。

【讨论】:

  • 你的权利,如果我将它解码为一类添加它工作。但正如书中所述,将其分配给 nsmutablearray。 apress.com/book/downloadfile/4476(如果你愿意,你可以看一下示例 09)在 PresidentsViewController.m
  • 我刚刚查看了示例,您可以在其中执行此操作,因为 @"Presidents" 是一个 pList 文件。
  • 感谢您的帮助!是的,但它已存档。我创建的那个是用同样的方法制作的。我刚刚注意到一件事。他们制作的归档文件的最后一个条目定义为 NSMutableArray。我的得到一个添加的定义。怎么可能改变呢?编辑:第 138 项显示类...
  • 很高兴能帮上忙,您的意思是如何更改 p 列表定义?如果您查看 Presidents.pList 文件,您会发现 $objects 是一个数组,您只需单击“数组”即可更改类型。
猜你喜欢
  • 2012-01-24
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多