iPhone - инт к NSData?
-
08-07-2019 - |
Вопрос
Я создаю приложение для 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"];
читать.
Не связан с StackOverflow