2009-05-07 4 views
17

나는 응용 프로그램의 상태를 저장하려는 iPhone 응용 프로그램을 만들고 있습니다. 여기에는 자체적으로 파일을 유지하는 int 속성이 포함됩니다. 필자는 그것을 작성하고 작업했지만, 내가 해독 한 방식으로 int를 String으로 변환 한 다음 NSData로 변환했다. 아무도 더 좋은 방법을 제안 할 수 있습니까?iPhone - NSData에 대한 int?

int i = 1; 
NSData *data = [NSData dataWithBytes: &i length: sizeof(i)]; 
[data writeToFile: [documentsDirectory stringByAppendingString: @"someFile"] atomically: YES] 

다시 읽기 : -

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]; 
+0

적어도 한 사람은 기본적으로 동의합니다 (http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg01317.html). NSNumber로 시작했지만 형식 단계를 건너 뜁니다. –

답변

57

은 작성하려면

NSData *data = [NSData dataWithContentsOfFile: [documentsDirectory stringByAppendingString: @"someFile"]]; 
int i; 
[data getBytes: &i length: sizeof(i)]; 

그러나 실제로는 NSUserDefaults을 사용해야합니다. 이 같은 g,이 경우 당신이 일을 할 것 :

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

작성 및

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

읽을.

+0

기본 설정 응용 프로그램에서 조정 된 사용자 기본 설정에 대한 NSUserDefaults가 아닌가요? – bpapa

+0

아니오; 가능하면 사용자 인터페이스가 없어도 앱 동작 정보를 여기에 저장하는 것이 안전하고 일반적입니다. OS X의 Safari는 사용자 기본값을 사용하여 마지막 창 크기, 개발자 기능 사용 여부 등을 저장합니다. –

관련 문제