20

アプリケーションの状態を保存したい 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];
4

1 に答える 1

58

書くには:

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"];

読む。

于 2009-05-07T19:58:13.397 に答える