Aktualizacja: Działa, jeśli wywołuję archiveRootObject: from applicationDidFinishLaunching :. Jeśli wywołasz go z init: metoda klasy singleton, zwraca zero.NSKeyedUnarchiver unarchiveObjectWithFile: zwraca zero w init: metoda
Jestem bardzo zdezorientowany przez zachowanie NSKeyedUnarchiver unarchiveObjectWithFile :. The documentation mówi, że zwróci zero, jeśli plik nie istnieje. Z jednym z moich przedmiotów, dodaje się dzieje:
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
I zostały zweryfikowane, że plik rzeczywiście istnieje i jest coraz zapisywane przez archiveRootObject: metody. Co robię źle uniemożliwiając mi wycofanie obiektu gry z archiwum?
Wątpię, czy rozwiąże to twoje pytanie, ale w Objective-C właściwym terminem jest 'BOOL' zamiast' bool'. – jbrennan
Dzięki za cynk. To mój pierwszy projekt w Objective-C. Zaktualizowałem wszystkie moje bool do BOOL's. – brantonb
Ustaw punkt przerwania na objc_exception_throw i sprawdź, czy wyjątek jest podnoszony. – peterb