我一直在寻找有关如何将某些内容保存到NSuserdefaults的教程,但只发现了主要处理数组和字符串的内容。任何人都可以引导我或给一些人有关保存和加载int的知识。对于我的应用程序,我的int highScore = 0;但我希望它将此int保存到您的NSuserdefaults中,这样当我的游戏加载备份时,它会显示您最近获得的当前高分。
答案 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 返回的所有内容都将是一个对象,并且可以以统一的方式进行处理。