Por que Conde NSMutableArray bater meu aplicativo?
-
19-09-2019 - |
Pergunta
Eu corri em um problema. Toda vez I'am começando meu aplicativo deixa de funcionar. código de Heres mim.
O depurador Diz: [list count]
trava o aplicativo. Eu não faço ideia. NSLog(@"%@", self.list);
me dá um item como esperado ...
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]);
O arquivo que está aberto foi criado assim:
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];
Se você precisar de qualquer código futher me avise. Eu ficaria muito grata por qualquer ajuda:)
Solução
Eu acredito que o problema é que você está codificando a classe Adicionando aqui:
[archiver encodeObject:adding forKey:@"TOWN"];
que não é uma NSMutableArray ainda quando você está decodificação você está tentando recuperá-lo como um NSMutableArray aqui:
NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"];
E eu estou supondo que sua classe Adicionando não é um Array.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow