NSUserDefaults不打印ExactValue

时间:2016-02-13 10:34:09

标签: ios objective-c nsuserdefaults

嗨,我是ios的新手,在我的项目中,我使用的是NSuserDEfaults

但是当我检索到int值时,我没有得到确切的值,我变得喜欢" 383252368"在NSLog声明中

请帮助我一些如何获得确切的价值

我的代码: -

用于保存: -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

NSUserDefaults *def =[NSUserDefaults standardUserDefaults]; [def setInteger:indexPath.row forKey:@"index"];

}

用于复查: -

  NSUserDefaults *def =[NSUserDefaults standardUserDefaults];
  int index = [def integerForKey:@"index"];

3 个答案:

答案 0 :(得分:0)

这样做:

保存如下:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
int index = indexPath.row;
[userDefaults setInteger:index forKey:@"index"];

检索如:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSInteger loadrows = [userDefaults integerForKey:@"index"];

修改

最好将它保存在数组中:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   int index = indexPath.row;
   [mutableArray addObject:index];
 }

然后Retrive:

for (NSIndexPath *indexPath in mutableArray) {
    NSLog(@"index : %d",indexPath);
}

答案 1 :(得分:0)

保存

   [[NSUserDefaults standardUserDefaults] setInteger:indexPath.row forKey:@"index"];

用于Retreiving

   NSInteger row = [[NSUserDefaults standardUserDefaults] integerForKey:@"index"];

Apple Documentation

的另一种方式

保存

   [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:indexPath.row] forKey:@"index"];

Retreiving

   NSInteger row = [[[NSUserDefaults standardUserDefaults] objectForKey:@"index"] intValue];

答案 2 :(得分:0)

问题在于储蓄本身。设置值后,您必须调用

[[NSUserDefaults standardUserDefaults] synchronize];

此方法确保该变量可用于在其他视图控制器中获取。如果没有设置,那么变量的并行访问将导致一些junk.unknown值。