2013-04-23 172 views
0

我已经搜索,但我无法找到一个很好的解释,为什么我仍然没有从我保存的整数得到正确的值。ios从NSUserdefaults保存和检索NSNumber

这是我如何保存我的事件ID。

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

这就是我如何检索它。

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

我得到了gthis。

用户dfault 123581200

另外,需要注意,事件如果我这样做的intValue,而不是unsignedIntegerValue,它仍然给我一个随机ID号。想知道我做错了什么。

回答

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

这个工作。谢谢! – gdubs 2013-04-23 04:53:31

+1

欢迎你@gdubs – 2013-04-23 04:54:56

+0

这对我来说就像一个魅力..超级赞!!! – NSPratik 2016-10-21 12:46:38

1

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

使用此

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

若要检索您应该低于功能使用整数

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

当你问objectForKey,它第一个框,并然后返回该对象。发布intValue会将该对象的地址转换为整数。因此,每次你会收到不同的号码。

0

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

-1
NSNumber *number; 

店:

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

检索:

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