2013-04-23 168 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"]];