保存在 NSUserDefaults 中时 NSInteger 丢失值
NSInteger losing value when saved in NSUserDefaults
执行以下代码时,即使选择的 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);
您正在查找密钥 "savedlocation" 而不是 "savedlocations"。
编辑:
0
正在被该方法返回,这是为找不到的 NSInteger 返回的内容。我对奇怪的措辞不好。
您有几个问题需要解决:
- 您正在使用密钥
savedlocations
保存,但使用 savedlocation
检索它。注意第一个是复数。
- 您正在记录
location
,而不是 location2
,这是从 NSUserDefaults 中提取的内容。 location2
将始终为 0,因为以上几点。
- 编辑: 我在这里有关于调用
synchronize
的第三点,但事实证明这与这种情况无关,正如 rmaddy 在评论中所解释的那样下面。
不过,除了那些快速修复之外,您的配置应该有效。
执行以下代码时,即使选择的 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);
您正在查找密钥 "savedlocation" 而不是 "savedlocations"。
编辑:
0
正在被该方法返回,这是为找不到的 NSInteger 返回的内容。我对奇怪的措辞不好。
您有几个问题需要解决:
- 您正在使用密钥
savedlocations
保存,但使用savedlocation
检索它。注意第一个是复数。 - 您正在记录
location
,而不是location2
,这是从 NSUserDefaults 中提取的内容。location2
将始终为 0,因为以上几点。 - 编辑: 我在这里有关于调用
synchronize
的第三点,但事实证明这与这种情况无关,正如 rmaddy 在评论中所解释的那样下面。
不过,除了那些快速修复之外,您的配置应该有效。