문제

응용 프로그램 상태를 저장하고 싶은 iPhone 앱을 만들고 있습니다. 여기에는 자체적으로 파일에 지속되는 int 속성이 포함됩니다. 나는 그것을 쓰고 일했지만, 내가 한 방식이 int를 문자열로 변환 한 다음 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"];

읽다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top