Actualización: Esto funciona si invoco archiveRootObject: desde applicationDidFinishLaunching :. Si lo llamo desde el método init: de una clase singleton, devuelve nil.NSKeyedUnarchiver unarchiveObjectWithFile: devuelve nil en init: método
Estoy muy confundido por el comportamiento de NSKeyedUnarchiver unarchiveObjectWithFile :. The documentation dice que devolverá nil si el archivo no existe. Con uno de mis objetos, ocurre lo siguiente:
Game *g1 = [Game getGame];
NSString *archivePath = [Game getArchivePath];
bool success = [NSKeyedArchiver archiveRootObject:g1 toFile:archivePath];
Game *g2 = [NSKeyedUnarchiver unarchiveObjectWithFile:archivePath];
// success is true, g2 is nil
He verificado que el archivo realmente existe y está siendo escrita por el archiveRootObject: método. ¿Qué estoy haciendo mal para evitar que vuelva a sacar un objeto del juego del archivo?
Dudo que esto resuelva su pregunta, pero en Objective-C el término correcto es 'BOOL' en lugar de' bool'. – jbrennan
Gracias por el consejo. Este es mi primer proyecto Objective-C. He actualizado todos mis bool's a BOOL's. – brantonb
Establezca un punto de interrupción en objc_exception_throw y vea si se está produciendo una excepción. – peterb