“нераспознанная селекторная” ошибка. Не может понять это

Я пытался заставить OAuth для Твиттера работать над моим приложением для iPhone в течение последних дней, и я не могу ни за что в жизни выяснить, почему я получаю эту ошибку. Я изменил способ, которым я приближался к этому некоторое время теперь, но тем не менее ничему. Таким образом, я обращаюсь к ТАК для обнадеживающего понимания этого.

Учебное руководство связано здесь. Загружение приложения и выполнение его работают ОТЛИЧНО. Это не работает на меня.

Вот ошибка, которую я получаю -

2010-07-25 20:04:52.224 AppTest[4620:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OAToken setVerifier:]: unrecognized selector sent to instance 0x6c2acc0'

Кто-либо может сказать мне, что я делаю неправильно? Я использую в значительной степени тот же код.

Править: Вот код, где я использую setVerifier:

- (IBAction)finishSetup:(id)sender {

        NSString *thePin = [[NSString alloc] initWithString:pinText.text];
        NSLog(@"%@", thePin);
        if([thePin length] == 7 && [[NSScanner scannerWithString:thePin] scanInt:NULL]) {

            loadingView.hidden = NO;

            [pinText resignFirstResponder];

            OAConsumer *consumer = [[OAConsumer alloc] initWithKey:consumer_key secret:consumer_secret];
            OADataFetcher *fetcher = [[OADataFetcher alloc] init];
            NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"];

            [accessToken setVerifier:pinText.text];

            NSLog(@"Using PIN %@", accessToken.verifier);
            OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:consumer token:accessToken realm:nil signatureProvider:nil];
            [request setHTTPMethod:@"POST"];

            NSLog(@"Getting access token...");

            [fetcher fetchDataWithRequest:request delegate:self didFinishSelector:@selector(accessTokenTicket:didFinishWithData:) didFailSelector:@selector(accessTokenTicket:didFailWithError:)];

        } else {

            loadingView.hidden = YES;
            error_alert = [[UIAlertView alloc]  initWithTitle:@"TestApp" message:@"The PIN you have entered is invalid. Please try again." delegate:self cancelButtonTitle:@"Cancel Login" otherButtonTitles:@"Try again", nil];
            [error_alert show];
            [error_alert release];

        }

        [thePin release];

    }

1
задан Raphael Caixeta 26 July 2010 в 00:37
поделиться

5 ответов

Если это сработает, новый XCode 4 просто великолепен. Я загрузил ZIP-файл из учебника, который вы связали, и похоже, что OAMutableURLRequest.m имеет ошибки во всем файле, думая, что NSString отвечает на URLEncodedString.

Попробуйте обновить URLEncodedString до

stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding

Сообщите мне, если это сработает!

0
ответ дан 2 September 2019 в 22:46
поделиться

Try

[accessToken setVerifier:thePin];
0
ответ дан 2 September 2019 в 22:46
поделиться

Я думаю, что BarrettJ разобрался. Аргумент setVerifier ожидает NSString. Поскольку вы передаете что-то другое, он ищет другой setVerifier, который соответствует сигнатуре, и не находит его. Это приведет к ошибке "Unrecognized Selector".

0
ответ дан 2 September 2019 в 22:46
поделиться

accessToken setVerifier: ожидает NSString *

thePin и pinText.text оба являются NSString *

На самом деле нужно показать, где вы создаете экземпляр переменной accessToken.

1
ответ дан 2 September 2019 в 22:46
поделиться

Я автор сообщения, на которое вы ссылаетесь отсюда.

Причина, по которой вы получаете эту ошибку, заключается в том, что вы используете неправильную версию OAuthConsumer. Доступно несколько версий, и большинство из них не имеют поля «верификатор» в OAToken и вернут ошибку, которую вы видите, если вы попытаетесь ее использовать. Пример проекта из моего сообщения содержит правильную версию OAuthVerifier, поэтому он работает.

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

1
ответ дан 2 September 2019 в 22:46
поделиться