【发布时间】:2011-07-23 20:11:25
【问题描述】:
在我的应用程序中,我需要保存一个双精度值(高分)和字符串(玩家姓名)我应该使用什么来获得这个。
任何想法都会很棒。
谢谢
【问题讨论】:
标签: iphone objective-c save storage nsuserdefaults
在我的应用程序中,我需要保存一个双精度值(高分)和字符串(玩家姓名)我应该使用什么来获得这个。
任何想法都会很棒。
谢谢
【问题讨论】:
标签: iphone objective-c save storage nsuserdefaults
正如 deanWombourne 所说,您可以使用 NSUserDefaults 来存储这些数据,但它不是很安全。如果您不想“在空中”存储这些数据,可以查看 Buzz Andersen 的 SFHFKeychainUtils 将它们存储在 iPhone 钥匙串中。
首先,将 SFHFKeychainUtils 文件复制到您的项目中。单击 SFHFKeychainUtils.m 并单击获取信息。转到目标选项卡并检查目标附近的框是否已选中。如果没有,请检查它。按住 Control 键单击您的框架文件夹并选择添加现有框架。找到 Security.framework 并将其添加到您的项目中。通过对 SFHFKeychainUtils.m 执行相同的过程来检查该框架是否已添加到您的目标中。现在打开您要使用此代码的位置的实现文件,并在顶部添加#import "SFHFKeychainUtils.h"。
这是一个关于如何使用这段代码的小例子:
// to store your data
NSError *error = nil;
[SFHFKeychainUtils storeUsername:kName andPassword:name forServiceName:kStoredName updateExisting:YES error:&error];
[SFHFKeychainUtils storeUsername:kScore andPassword:score forServiceName:kStoredScore updateExisting:YES error:&error];
// to get them back
NSString *name = [SFHFKeychainUtils getPasswordForUsername:kName andServiceName:kScoredName error:&error];
double score = [SFHFKeychainUtils getPasswordForUsername:kScore andServiceName:kScoredScore error:&error];
// kName, kScore, kStoredName, kStoredScore are defined key but you can use also strings with @"your string here".
// It is important that when you store and get back a value, username and serviceName must be the same.
【讨论】:
[NSNumber numberWithDouble:score] 并使用 doubleValue 取回值:)
如果这就是你要保存的全部,那么NSUserDefaults 应该没问题
// To store
[[NSUserDefaults standardUserDefaults] setObject:name forKey:@"name"];
[[NSUserDefaults standardUserDefaults] setDouble:score forKey:@"score"];
// To read back in
NSString *name = [[NSUserDefaults standardUserDefualts] objectForKey:@"name"];
double score = [[NSUserDefaults standardUserDefaults] doubleForKey:@"score"];
// Don't forget that your name is autoreleased - if you want to keep it, set it to a retained
// property or retain it yourself :)
【讨论】: