简体   繁体   English

ios从NSUserdefaults保存和检索NSNumber

[英]ios saving and retrieving NSNumber from NSUserdefaults

I've searched but I can't find a good explanation as to why I'm still not getting the right value from my saved Integer. 我进行了搜索,但是找不到为什么我仍然无法从保存的Integer中获得正确的值的很好的解释。

This is how I saved my event Id. 这就是我保存事件ID的方式。

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

This is how I'm trying to retrieve it. 这就是我试图检索它的方式。

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

I'm gettin gthis. 我正在这。

user dfault 123581200 用户dfault 123581200

Also, to note, event if I did intValue instead of unsignedIntegerValue , it would still give me a random id number. 另外,需要注意的是,如果我执行intValue而不是unsignedIntegerValue ,它仍然会给我一个随机的ID号。 was wondering what I'm doing wrong. 想知道我在做什么错。

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"]);

Instead of this code NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]); 代替此代码NSLog(@"user dfault %@", [NSNumber numberWithUnsignedInt:[[[NSUserDefaults standardUserDefaults] objectForKey:@"currentEvent"] unsignedIntegerValue]]);

Use this 用这个

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

To retrieve the integer you should use below function: 要检索整数,应使用以下函数:

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

when you ask for objectForKey, it box it first and then return the object. 当您请求objectForKey时,它首先将其包装,然后返回该对象。 Posting intValue will convert the address of that object into integer. 张贴intValue会将该对象的地址转换为整数。 Hence each time you will receive different number. 因此,每次您将收到不同的号码。

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

NSNumber *number;

store: 商店:

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

retrieving: 检索:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM