NSInteger在NSUserDefaults中保存时会丢失值

时间:2015-08-05 20:33:39

标签: ios objective-c nsuserdefaults nsinteger

当执行以下代码时,即使选择的indexPath.row为“1”,它也会记录“0”。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSInteger location = indexPath.row;
[userDefaults setInteger:location forKey:@"savedlocations"];
NSInteger location2 = [userDefaults integerForKey:@"savedlocation"];
NSLog(@"l: %ld", location);

2 个答案:

答案 0 :(得分:1)

你有几件事需要修复:

  • 您使用密钥savedlocations保存,但使用savedlocation检索密钥。请注意,第一个是复数。
  • 您正在记录location,而不是location2,这是从NSUserDefaults中提取的内容。由于上述要点,location2将始终为0。
  • 编辑:我在这里有第三点关于致电synchronize,但事实证明这与这种情况无关,正如rmaddy在下面的评论中所解释的那样。

除了那些快速修复,您的配置应该可以正常工作。

答案 1 :(得分:-1)

您正在寻找密钥" savedlocation"而不是" savedlocations"。

编辑:

方法返回

0,这是为无法找到的NSInteger返回的内容。我对这个怪异的措辞很不好。