Почему NSmutableArray Count приводит к сбою моего приложения?
-
19-09-2019 - |
Вопрос
Я столкнулся с проблемой.Каждый раз, когда я запускаю приложение, оно вылетает.Вот мой код.Отладчик говорит: [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 не является массивом.
Не связан с StackOverflow