Domanda

Sto realizzando un'app per iPhone in cui voglio salvare lo stato dell'applicazione. Ciò include una proprietà int che sto persistendo in un file per conto suo. L'ho scritto e funzionante, ma so che il modo in cui l'ho fatto è stato un po 'confuso, convertendo l'int in una stringa e poi NSData. Qualcuno può suggerire un modo migliore?

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

E poi leggendolo dal disco e rimettendolo in un int -

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

Soluzione

Per scrivere:

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

e rileggere:

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

Tuttavia, dovresti davvero usare NSUserDefaults per qualcosa del genere, nel qual caso dovresti fare:

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

per scrivere e

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

da leggere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top