Frage

Ich erstelle eine iPhone-App, in der ich den Status der Anwendung speichern möchte.Dazu gehört eine int-Eigenschaft, die ich in einer eigenständigen Datei behalte.Ich habe es geschrieben und funktioniert, aber ich weiß, dass die Art und Weise, wie ich es gemacht habe, etwas umständlich war, das int in einen String und dann in NSData umzuwandeln.Kann jemand einen besseren Weg vorschlagen?

int someInt = 1;
NSString *aString = [NSString stringWithFormat:@"%d",someInt];
NSData *someData = [aString dataUsingEncoding:NSUTF8StringEncoding];
[someData writeToFile:[documentsDirectory stringByAppendingString:@"someFile"] atomically:YES];

Und es dann von der Festplatte lesen und wieder in ein int einfügen -

NSData* someData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingString:@"someFile"]];
NSString *aString = [[NSString alloc] initWithData:someData encoding:NSUTF8StringEncoding];
int someInt = [aString intValue];
War es hilfreich?

Lösung

Schreiben:

int i = 1;
NSData *data = [NSData dataWithBytes: &i length: sizeof(i)];
[data writeToFile: [documentsDirectory stringByAppendingString: @"someFile"] atomically: YES]

und zum Zurücklesen:

NSData *data = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingString: @"someFile"]];
int i;
[data getBytes: &i length: sizeof(i)];

Sie sollten es jedoch wirklich verwenden NSUserDefaults Für so etwas würden Sie in diesem Fall Folgendes tun:

[[NSUserDefaults standardUserDefaults] setInteger: i forKey: @"someKey"]

schreiben, und

int i = [[NSUserDefaults standardUserDefaults] integerForKey: @"someKey"];

lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top