NSUserDefaults无法正常工作

时间:2014-08-25 06:55:36

标签: ios objective-c session nsuserdefaults

我试图从我的数据库中获取价值并将其保存在NSUserDefault中以在页面之间创建会话。

这是我的代码:

NSString *userStatus = [[[dataDict valueForKey:@"user"]objectAtIndex:0]valueForKey:@"status"];
NSUserDefaults *userStatusID=[NSUserDefaults standardUserDefaults];
[userStatusID setObject:userStatus forKey:@"status"];
[userStatusID synchronize];

这是dataDict:

user =({
        "event_id" = 9;
        "job_title" = Manager;
        "last_login" = "2014-08-06 13:40:53";
        name = "********";
        id = ******;
        phone = ************;
        photo = "**********.jpeg";
        "status" = 1;
        }

以下是获取它的代码:

NSUserDefaults *userStatusID=[NSUserDefaults standardUserDefaults];
NSString *statusID = [userStatusID objectForKey:@"status"];
NSLog(@"Created status: %@",statusID);

状态只能是1或0,但日志始终表示状态为空。我尝试为其他字段创建NSUserDefault,例如name和id,它运行良好。你知道我哪里做错了吗?谢谢你的帮助

解决: 抱歉我的愚蠢错误。实际上我的代码工作得很好,但我确实错误地将代码放在登录表单中,而登录后创建的字典是以home格式创建的。移动代码后,它运行良好。无论如何,感谢大家的帮助,我在尝试了所有代码之后想出来了^^爱你萌芽

2 个答案:

答案 0 :(得分:1)

尝试替换它:

NSString *userStatus = [[[dataDict valueForKey:@"user"]objectAtIndex:0]valueForKey:@"status"];

用这个:

NSString *userStatus = [[[dataDict valueForKey:@"user"]objectAtIndex:0] objectForKey:@"status"];

答案 1 :(得分:1)

替换

NSString *userStatus = [[[dataDict valueForKey:@"user"]objectAtIndex:0]valueForKey:@"status"];

使用:

NSString *userStatus = dataDict[@"user"][0][@"status"];

在保存之前你可以NSLog(@"userStatus:%@", userStatus)检查值是否正确。