2009-05-07 2 views
17

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

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

А потом чтение с диска и положить его обратно в междунар -

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

По крайней мере, одно другое лицо в основном соглашается (http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg01317.html). Хотя они начались с NSNumber, который обходит шаг формата. –

ответ

57

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

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 для somethin г, как это, в этом случае вы будете делать:

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

писать, и

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

читать.

+0

Это не NSUserDefaults только для пользовательских настроек, которые настроены в приложении настроек? – bpapa

+0

Нет; хотя вы можете, он также безопасен (и распространен) для хранения информации о поведении приложения там, даже если нет пользовательского интерфейса. Safari в OS X использует пользовательские настройки по умолчанию для сохранения таких вещей, как размер последнего окна, включены ли функции разработчика и т. Д. –

Смежные вопросы