iPhone - int su NSData?
-
08-07-2019 - |
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];
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