Obj-C - отзыв пользовательской сессии не возвращает все данные? - PullRequest
0 голосов
/ 12 февраля 2019

После того, как мой пользователь впервые заходит в мое приложение, я сохраняю информацию о его сеансе, чтобы позже вызвать ее, чтобы им не приходилось многократно регистрироваться.Тем не менее, в некоторых частях моего приложения я извлекаю данные из сеанса:

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 заполняется как следует.

Однако , если мой пользователь на какое-то время закрывает приложение и позже возвращается к приложению, а сеанс открывается заново, данные сеанса возвращают только половину того, что должны - например, он не возвращает ни одно из полей, связанных с'user':

 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);


                                                     }
             ];

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...