将单个int保存到NSdefaults中

时间:2009-07-12 01:26:10

标签: iphone objective-c

我一直在寻找有关如何将某些内容保存到NSuserdefaults的教程,但只发现了主要处理数组和字符串的内容。任何人都可以引导我或给一些人有关保存和加载int的知识。对于我的应用程序,我的int highScore = 0;但我希望它将此int保存到您的NSuserdefaults中,这样当我的游戏加载备份时,它会显示您最近获得的当前高分。

3 个答案:

答案 0 :(得分:12)

int highScore = 0;

// write
[[NSUserDefaults standardUserDefaults] setInteger:highScore forKey:@"someKey"];

// read
highScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"someKey"];

答案 1 :(得分:2)

使用NSNumber将其保存为-[NSNumber numberWithInt:highScore]

答案 2 :(得分:0)

NSUserDefaults 只能处理属性列表对象。属性列表对象必须是以下类型之一 NSArray NSDictionary NSString NSData NSData NSNumber

NSUserDefaults 有许多辅助方法可以自动将c数字类型转换为 NSNumber 对象。 setInteger:forKey: integerForKey:以及整数的辅助方法。这些方法期望整数的类型为 NSInteger NSInteger 不是对象。它只是 long int 的typedef。您的代码将highScore定义为 int 。这可能是问题的原因。

我更喜欢将c数字类型转换为 NSNumber 对象并保存对象。虽然这似乎是额外的工作,但这可以简化您的代码,因为 NSUerDefaults 返回的所有内容都将是一个对象,并且可以以统一的方式进行处理。