iPhone - инт к NSData? - PullRequest
       15

iPhone - инт к NSData?

17 голосов
/ 07 мая 2009

Я создаю приложение для iPhone, в котором я хочу сохранить состояние приложения. Это включает в себя свойство int, которое я сохраняю в файл самостоятельно. У меня это написано и работает, но я знаю, как это было немного хакерским, преобразование int в String, а затем NSData. Кто-нибудь может предложить лучший способ?

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

А затем читать его с диска и помещать обратно в int -

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

1 Ответ

57 голосов
/ 07 мая 2009

Написать:

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

и прочитать обратно:

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

Однако вы действительно должны использовать NSUserDefaults для чего-то подобного, в этом случае вы будете делать:

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

написать и

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

читать.

...