Действия в операторе if не выполняются - PullRequest
0 голосов
/ 02 января 2012

Мне нужно установить текст метки, если некоторые конкретные условия выполняются (не обращайте на них внимания, потому что эта часть кода верна). Это должно быть очень легко, но на удивление это не работает! Это действие полностью пропущено. Я думаю, что проблема вызвана этим огромным количеством «если заявления». Это мой код: (часть, которая пропущена, находится во втором фрагменте кода)

    -(void)setCustomUsername{

        stillChecking = YES;

        ACAccountStore *account = [[ACAccountStore alloc] init];
        ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

        [account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) 
         {
             // Did user allow us access?
             if (granted == YES)
             {
                 // Populate array with all available Twitter accounts
                 arrayOfAccounts = [account accountsWithAccountType:accountType];

                 // Sanity check
                 if ([arrayOfAccounts count] > 0) 
                 {
                     NSString *customUser = [self updateCustomUser];
                     int numberOfAccounts = [arrayOfAccounts count];
                     int accountsAdded = 0;
                     specAccountIndex = 0;

                     NSLog(@"index 0 = %@", [[arrayOfAccounts objectAtIndex:0] username]);
                     NSLog(@"index 1 = %@", [[arrayOfAccounts objectAtIndex:1] username]);
                     NSLog(@"spec_username = %@", customUser);
                     NSLog(@"numberOfAccounts = %i", numberOfAccounts);

                     // Check if a specified username exist.
                     if (isThereASpecifiedUsername) {

                         NSLog(@"3");
                         while (numberOfAccounts > accountsAdded) {
                             NSLog(@"4");
                             if ([customUser isEqualToString:[[arrayOfAccounts objectAtIndex:specAccountIndex] username]]) {
                                 NSLog(@"NewTweet will use the account at index %i", specAccountIndex);
                                 accountsAdded = numberOfAccounts;
                                 stillChecking = NO;
                                 //[accountIndexLabel setText:[NSString stringWithFormat:@"%i", selAccountIndex]];
                             }
                             else{
                                 ++specAccountIndex;
                                 ++accountsAdded;
                             }
                         }
                         NSLog(@"specAccountIndex: %i", specAccountIndex);

                     }
                     else {

--------------------------- ЭТО ВАЖНАЯ ЧАСТЬ (НИЖЕ) --------- -------------------

    //we set the value of a simple integer to 0
                         specAccountIndex = 0;

    //now we set the string "finalChoice" equal to specAccountIndex
                         NSString *finalChoice = [NSString stringWithFormat:@"%i", specAccountIndex];

    //now just a check (and yes, it works)
                         NSLog(@"The app will use the account at index %@", finalChoice);

    //than we set the text of a label equal to finalChoice (This part does *NOT* work)
                         [accountIndexLabel setText:finalChoice];

    //than we check if the text has been set (This part does *NOT* work)
                         NSLog(@"accountIndexLabel check = %@", accountIndexLabel.text);

                         stillChecking = NO;
                     }

                  }}}];


        while (stillChecking) {}

        NSLog(@"accountIndexLabel check at the end of the process = %@", accountIndexLabel.text);
    }

1 Ответ

0 голосов
/ 02 января 2012

Как выяснилось в комментариях Пола, ваш accountIndexLabel равен nil.Я полагаю, это потому, что вы забыли перетащить строку из UILabel в точку в коде владельца или забыли добавить outlet перед вашим полем UILabel ИЛИ, если вы инициализируете UILabel в коде, который вы забыли выделить init.1004 *

Установка строки NSString для объекта nil не вызовет исключения в Objective-C, как это было бы в других языках, фактически он вызывает сеттер для объекта nil, который вызывает метод для nil объект, который ничего не делает в Objective-C.

Голосуйте за комментарий Паулса: -)

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