2009-05-07 3 views
17

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 a parte. L'ho scritto e lavorato, ma so che il modo in cui l'ho fatto è stato un po 'hacky, convertendo l'int in String e poi NSData. Qualcuno può suggerire un modo migliore?iPhone - int a NSData?

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

E poi la lettura dal disco e rimetterlo in un int -

NSData* someData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingString:@"someFile"]]; 
NSString *aString = [[NSString alloc] initWithData:someData encoding:NSUTF8StringEncoding]; 
int someInt = [aString intValue]; 
+0

Almeno un'altra persona è sostanzialmente d'accordo (http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg01317.html). Sebbene inizino con NSNumber, che ignora il passaggio del formato. –

risposta

57

Per scrivere:

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

e leggere di nuovo:

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

Comunque, dovresti usare lo NSUserDefaults per qualcosa g come questo, nel qual caso si sarebbe fare:

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

di scrivere, e

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

da leggere.

+0

Non è NSUserDefaults solo per le preferenze dell'utente che vengono regolate nell'app delle preferenze? – bpapa

+0

No; sebbene sia possibile, è anche sicuro (e comune) memorizzare le informazioni sul comportamento delle app, anche se non è disponibile alcuna interfaccia utente. Safari su OS X utilizza le impostazioni predefinite dell'utente per salvare cose come le dimensioni della finestra, se le funzioni sviluppatore sono abilitate e così via. –