Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top