Mise à jour: Cela fonctionne si j'appelle archiveRootObject: from applicationDidFinishLaunching :. Si je l'appelle depuis la méthode init: d'une classe singleton, elle renvoie nil.NSKeyedUnarchiver unarchiveObjectWithFile: retourne zéro dans init: méthode
Je suis très confus par le comportement de NSKeyedUnarchiver unarchiveObjectWithFile :. The documentation dit qu'il retournera zéro si le fichier n'existe pas. Avec un de mes objets, ce qui suit se produit:
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
J'ai vérifié que le fichier existe et ne fait est de s'inscriptible par l'archiveRootObject: méthode. Qu'est-ce que je fais de mal m'empêchant de récupérer un objet Game hors de l'archive?
Je doute que cela puisse résoudre votre question, mais en Objective-C, le terme approprié est 'BOOL' au lieu de' bool'. – jbrennan
Merci pour le conseil. C'est mon premier projet Objective-C. J'ai mis à jour tous mes boolos à BOOL. – brantonb
Définissez un point d'arrêt sur objc_exception_throw et vérifiez si une exception est levée. – peterb