从NSUserdefaults保存和检索NSNumber

时间:2013-04-23 04:23:53

标签: ios objective-c cocoa-touch ios4

我已经搜索了但是我找不到一个很好的解释,为什么我仍然没有从我保存的整数中获得正确的值。

这就是我保存事件ID的方式。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:eventSelected.eventId forKey:@"currentEvent"];

这就是我试图检索它的方式。

NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]);

我开始了。

  

user dfault 123581200

另外,要注意,如果我执行了 intValue 而不是 unsignedIntegerValue ,则它仍然会给我一个随机ID号。我想知道我做错了什么。

5 个答案:

答案 0 :(得分:12)

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// Convert your value to IntegerValue and Save it
[prefs setInteger:[eventSelected.eventId integerValue] forKey:@"currentEvent"];
// Dont forget to synchronize UserDefaults
[prefs synchronize];

// To Access this value
NSLog(@"%d",[prefs integerForKey:@"currentEvent"]);

答案 1 :(得分:1)

而不是此代码NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]);

使用此

NSLog(@"user dfault %@", [[NSUserDefaults standardUserDefaults]  integerForKey:@"currentEvent"]);

答案 2 :(得分:0)

要检索整数,您应该使用以下函数:

[[NSUserDefaults standardUserDefaults]  integerForKey:@"currentEvent"];

当你请求objectForKey时,它首先将其打包然后返回该对象。发布intValue会将该对象的地址转换为整数。因此,每次您收到不同的号码。

答案 3 :(得分:0)

NSNumber给出一个指针值,而不是整数值。

答案 4 :(得分:-1)

NSNumber *number;

存储

[[NSUserDefaults standardUserDefaults] setValue:number forKey:@"Number"];

检索:

number = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"Number"]];