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 回答