Проблема в NSUserDefaults - PullRequest
       2

Проблема в NSUserDefaults

0 голосов
/ 09 сентября 2011

Я создаю приложение для рабочей площадки.Сначала отобразится страница входа.когда мы введем имя пользователя и пароль, веб-сервис вернет идентификатор пользователя в качестве ответа.с этим идентификатором пользователя мы можем получать задания.

Я хочу сначала поставить экран заданий и проверить, равен ли идентификатор пользователя нулю, а затем открыть loginview.если это не нуль, тогда загружают работы в табличном представлении.Я использовал Nsuserdefaults для сохранения ответа, когда пользователь впервые вводит имя пользователя и пароль.Все работает нормально.но ключ userdefault показывает ноль в консоли, но мое условие также загружает вывод .. это странно,

мой код

-(void)CheckCond{
    NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];

    NSLog(@"Value for userdefault %@",[storeData objectForKey:@"userId"]);
    NSString *responseValue = [storeData objectForKey:@"userId"];

    NSLog(@"first REsponse value :%@",responseValue);

    if ([responseValue isEqualToString:@""]) {


        [self LoginLogout];


    }
    else
{
    NSLog(@"self.userId %@",self.userId);



        NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];
        [storeData setObject:self.userId forKey:@"userId"];

        NSLog(@"%@",[storeData objectForKey:@"userId"]);
        [self loadOutput];

    }
}

Вывод на консоль при первом входе в систему

2011-09-09 13: 21: 29.438 ITClassifiedUniversal [2718: 207] первое значение отклика: (null) 2011-09-09 13: 21: 29.438 ITClassifiedUniversal [2718: 207] self.userId 77533 2011-09-09 13: 21: 29.438 ITClassifiedUniversal [2718: 207] 77533

После выхода из приложения и перезапуска вывод консоли:

2011-09-09 13:21: 42.044 ITClassifiedUniversal [2731: 207] Значение для пользовательской ошибки (null) 2011-09-09 13: 21: 42.045 ITClassifiedUniversal [2731: 207] первое значение отклика RE: (null) 2011-09-09 13: 21: 42.045 ITClassifiedUniversal [2731: 207] self.userId (null) 2011-09-09 13: 21: 42.045 ITClassifiedUniversal [2731: 207] (null)

Как показано выше, вывод NSUserdefault для ИД пользователя равен null ??В чем проблема?Этот идентификатор пользователя поступает из вида входа в систему

// Create and set up job view controller.
                jobView = [[JobViewController alloc] initWithNibName:@"JobView" bundle:nil];
                jobView.userId = self.response;

                // Create a nav controller with job view as its root controller.
                UINavigationController *jobViewNavController = [[UINavigationController alloc] initWithRootViewController:jobView];

                // Present the job view nav controller.
                [self presentModalViewController:jobViewNavController animated:YES];

                [jobView release];
                [jobViewNavController release];

Ответы [ 4 ]

1 голос
/ 09 сентября 2011
    at last add synchronize statement then its give proper value
    NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];
if ([storeData objectForKey:@"userId"]==nil)
{
            [storeData setObject:self.userId forKey:@"userId"];

    [storeData synchronize];
}
0 голосов
/ 09 сентября 2011

Посмотрите на AppDelegate.m из этого примера кода от Apple, и вы узнаете, что случилось с вашим кодом.

Вы не вызвали registerDefaults с соответствующими объектами и ключами для вашего NSUserDefaults.

0 голосов
/ 09 сентября 2011

Вы можете использовать код ниже.это может дать то, что вам нужно.

[[NSUserDefaults standardUserDefaults] setValue:userID forKey:@"userID"];         
[[NSUserDefaults standardUserDefaults] synchronize];
0 голосов
/ 09 сентября 2011

После установки вашего userId вам необходимо сохранить значения по умолчанию:

[storeData synchronize];

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

Кроме того, если ваш объект равен nil, он не вернет YES в isEqualToString.Ваше заявление if должно быть

if (!responseValue || [responseValue isEqualToString:@""])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...