Aggiornamento: Questo funziona se chiamo archiveRootObject: from applicationDidFinishLaunching :. Se lo chiamo dal metodo init: di una classe singleton, restituisce nil.NSKeyedUnarchiver unarchiveObjectWithFile: restituisce nil in init: metodo
Sono molto confuso dal comportamento di NSKeyedUnarchiver unarchiveObjectWithFile :. The documentation dice che restituirà nil se il file non esiste. Con uno dei miei oggetti, accade quanto segue:
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
Ho verificato che il file in realtà esiste ed è sempre scritto per l'archiveRootObject: metodo. Cosa sto facendo male mi impedisce di recuperare un oggetto di gioco dall'archivio?
Dubito che questo risolva la tua domanda, ma in Objective-C il termine corretto è 'BOOL' invece di' bool'. – jbrennan
Grazie per il suggerimento. Questo è il mio primo progetto Objective-C. Ho aggiornato tutti i miei bool in quelli di BOOL. – brantonb
Impostare un punto di interruzione su objc_exception_throw e verificare se viene sollevata un'eccezione. – peterb