我的用户首次登录我的应用程序后,我保存了他们的会话信息,以便以后调用它,这样他们就无需多次登录。也就是说,在我的应用的某些部分中,我正在从会话中提取数据:
ViewController.m
NSString *amVerified = [session user][@"user"][@"field_checked_messages"][@"und"][0][@"safe_value"];
奇怪的是,第一次打开会话时,将返回以下数据:
2019-02-08 13:05:59.651056-0800[4681:1246584] SHOW ME EVERYTHING {
sessid = "sesshere";
"session_name" = nameofsession;
token = "tokenhere";
user = {
access = 1549659837;
created = 1459875505;
data = {
"ckeditor_auto_lang" = t;
"ckeditor_default" = t;
"ckeditor_lang" = en;
"ckeditor_show_toggle" = t;
"ckeditor_width" = "100%";
"remember_me" = 0;
};
"field_address" = {
und = (
{
format = "<null>";
"safe_value" = "ADDRESS, Vancouver";
value = "ADDRESS, Vancouver";
}
);
};
"field_ambassador" = (
);
"field_checked_messages" = {
und = (
{
format = "<null>";
"safe_value" = "0 10) 9) 10) 10)";
value = "0 10) 9) 10) 10)";
}
);
};
上面提到的NSString会按需填充。
但是 如果我的用户关闭了一段时间的应用程序,然后稍后返回到应用程序并重新打开了会话,则会话数据仅返回一半它应该是什么-例如它不返回与“用户”相关的任何字段:
2019-02-08 13:05:59.651056-0800[4681:1246584] SHOW ME EVERYTHING {
sessid = "sesshere";
"session_name" = nameofsession;
token = "tokenhere";
user = {
access = 1549659837;
created = 1459875505;
data = {
"ckeditor_auto_lang" = t;
"ckeditor_default" = t;
"ckeditor_lang" = en;
"ckeditor_show_toggle" = t;
"ckeditor_width" = "100%";
"remember_me" = 0;
};
并且NSString amVerified(自然地)为NULL。是否有人对重新打开应用程序时为什么不返回“用户”字段有任何见解?这是我用来将用户重新登录到应用程序中的代码:
[DIOSUser userMakeSureUserIsLoggedInWithUsername:[keychain objectForKey:(id)kSecAttrAccount]
andPassword:[keychain objectForKey:(id)kSecValueData]
success:^(AFHTTPRequestOperation *op, id response) {
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:response] forKey:@"diosSession"];
[[NSUserDefaults standardUserDefaults] synchronize];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *yourViewController = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabBar"];
[self.navigationController pushViewController:yourViewController animated:YES];
UITabBarController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"tabBar"];
[viewController setSelectedIndex:0];
}
failure:^(AFHTTPRequestOperation *op, NSError *err) {
// failure(err);
}
];
}