2009-05-07 5 views
17

Tworzę aplikację na iPhone'a, w której chcę zapisać stan aplikacji. Obejmuje to własność typu int, którą sam utrzymuję w pliku. Mam to napisane i działa, ale wiem, że sposób w jaki to zrobiłem był trochę odurzający, konwertując int do String, a następnie NSData. Czy ktokolwiek może sugerować lepszy sposób?iPhone - int do NSData?

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

A następnie czyta je z dysku i wprowadzenie go z powrotem do int -

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

Co najmniej jedna inna osoba zasadniczo się zgadza (http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg01317.html). Chociaż zaczęli od NSNumber, który omija krok formatu. –

Odpowiedz

57

Aby napisać:

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

i czytać powrotem:

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

Jednak naprawdę powinieneś używać NSUserDefaults dla czegoś g jak ten, w którym to przypadku chcesz robić:

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

pisać, a

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

czytać.

+0

Czy nie jest NSUserDefaults tylko dla preferencji użytkownika, które są dostosowane w aplikacji preferencji? – bpapa

+0

Nie; chociaż możesz, jest to również bezpieczne (i często) do przechowywania informacji o zachowaniu aplikacji, nawet jeśli nie ma dostępnego interfejsu użytkownika. Safari w systemie OS X używa ustawień domyślnych użytkownika, aby zapisać takie rzeczy, jak rozmiar ostatniego okna, czy funkcje programisty są włączone i tak dalej. –