Вопрос

Я создаю приложение для 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];
Это было полезно?

Решение

Написать:

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"];

читать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top