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];
Ответы
Ответ 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"];
для чтения.