Ich versuche, einige Daten in einer Klasse zu speichern genannt MyPos.h zu implementieren, die die NSCoding Methoden verwendet:wie applicationWillTerminate in appDelegate.m
(void)encodeWithCoder:(NSCoder *)aCoder
(id)initWithCoder:(NSCoder *)aDecoder
Diese In der MyPos.m-Datei wurden zwei Methoden implementiert.
Jetzt möchte ich die Anwendung die Daten speichern, wenn es beendet und Daten laden, wenn es fertig gestartet ist. Ich möchte die to-Methoden in der AppDelegate.m-Datei implementieren, aber ich kann nicht umgehen, wie Sie die Instanz der MyPos-Klasse speichern, die die Daten enthält.
Dies ist einer der beiden Methoden in der AppDelegate.m Datei ... so weit:
- (void)applicationWillTerminate:(UIApplication *)application {
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject: **HELP_HERE!** forKey:@"myPos"];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];}
Wie kann ich dieses Problem lösen? Vielen Dank im Voraus.
Haben Sie eine Instanz der MyPos-Klasse in Ihrem App-Delegaten? Speichern Sie die Instanz ... – jmstone617
'' applicationWillTerminate'' ist irgendwie nutzlos. Sie sollten Ihre Schreibroutinen besser in '' applicationWillEnterBackground'' oder "so bald wie möglich" implementieren. Ab iOS 4 erhält Ihre App beim Drücken der Home-Taste kein '' applicationWillTerminate''. Wenn sich Ihre App im Hintergrund befindet und aus irgendeinem Grund die App nicht mehr funktioniert, erhalten Sie nicht "applicationWillTerminate". –
Ich habe drei Klassen. AppDelegate, MyPos und ViewController. ViewController erstellt eine Instanz von MyPos, um die Daten zu speichern. Das AppDelegate erstellt auch eine Instanz von MyPos, um das Objekt zu speichern. Wenn ich jedoch am Ende von applicationDidEnterBackground ein NSLog hinzufüge, um die Eigenschaften der MyPos-Instanz zu überprüfen, kommen alle aus Null. Ich habe das Gefühl, dass ich es mit zwei verschiedenen Objekten zu tun habe - oder zumindest fehlt ein Link. Irgendwelche Gedanken? Vielen Dank. – gotfunk