Почему NSMutableArray Count приводит к сбою моего приложения? - PullRequest
0 голосов
/ 08 февраля 2010

Я столкнулся с проблемой. Каждый раз, когда я запускаю свое приложение, оно падает. Вот мой код. Отладчик говорит: [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];

Если вам нужен какой-либо код, дайте мне знать. Я был бы очень благодарен за любую помощь:)

1 Ответ

1 голос
/ 08 февраля 2010

Я считаю, что проблема в том, что вы кодируете класс добавления здесь:

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

, который еще не является NSMutableArray, когда вы декодируете, вы пытаетесь вернуть его как NSMutableArray здесь:

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

И я предполагаю, что ваш класс Добавление не является массивом.

...