Подтвердить что ты не робот

IPhone - int в NSData?

Я создаю приложение для 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];
4b9b3361

Ответ 1

Чтобы написать:

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

для чтения.