iPhone - 转换为 NSData?

标签 iphone objective-c nsdata

我正在制作一个 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];

最佳答案

写:

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

阅读。

关于iPhone - 转换为 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836681/

相关文章:

objective-c - 非 root 用户可以终止使用 ServiceManagement Framework 启动的 OS X "login item"吗?

iphone - 编码时 NSArray 对象会发生什么?

iphone - 将 nsdata 对象组合成 nsmutabledata 对象

iphone - iOS+ Parse.com : kPFCachePolicyCacheThenNetwork, 两次获取数据

ios - 你能以编程方式修改 iPhone App Info.plist 中的 NSExceptionMinimumTLSVersion 吗?

iphone - 如何限制iOS应用内存使用

ios - dataWithContentsOfURL 需要很长时间才能在 url 中返回大量单词

Swift 从照片库中获取视频的 NSData

iphone - #pragma mark 文本字段委托(delegate)

iphone - 删除后documents目录下的文件