Неизвестная проблема в моем коде - консоль говорит: нераспознанный селектор отправлен в экземпляр - я пытаюсь использовать MGTwitterEngine - PullRequest
1 голос
/ 13 января 2010

со вчерашнего дня у меня есть ошибка в моем приложении, и я не понимаю, где она. На самом деле я почти уверен, что ничего не изменил и что вчера все работало отлично.

Я не собираюсь публиковать весь код, но я могу опубликовать свой первый ViewController, если хотите.

Проблема возникает в обоих ViewControllers. Я использую MGTwitterEngine-API для отправки сообщения в Twitter. Насколько я знаю, ошибка, вызывающая сбой, находится в следующей строке.

MGTwitterEngine *twiit = [[MGTwitterEngine alloc] initWithDelegate:self];
[twiit setUsername:usernamee password:passworde];

Я думал, что в этом нет ничего плохого. Я ошибся? usernamee и passworde являются NSStrings.

Консоль возвращает:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MGTwitterEngine setUsername:password:]: unrecognized selector sent to instance 0x3911fb0'

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

Кроме того, я уверен, что в MGTwitterEngine нет ничего плохого, поскольку я никогда не менял его код. Возможно, это сработало, и я даже скопировал новый MGTwitterEnginge в папку проекта.

О, а вот UIAction, который реагирует на нажатие кнопки и приводит к сбою приложения:

    - (IBAction) post: (id) sender{


        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        NSString *usernamee;
        usernamee = [prefs stringForKey:@"name_preference"];
    //everthing works great, I checked, that usernamee got the right Nsstring from the preference
        NSString *passworde;
        passworde = [prefs stringForKey:@"password_preference"];

MGTwitterEngine * twitter1 = [[MGTwitterEngine alloc] initWithDelegate:self];
        [twitter1 setUsername:usernamee password:passworde];
        NSLog(@"sendUpdate: connectionIdentifier = %@", [twitter1 sendUpdate:[@""stringByAppendingString:twittermessage.text]] ); //It is not important, if I use sendUpdate, getDirectMessagesSinceID and so on...
            loadingActionSheet = [[UIActionSheet alloc] initWithTitle:@"Posting to Twitter..." delegate:nil 
                                                    cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
            [loadingActionSheet showInView:self.view];
    }

Ответы [ 2 ]

1 голос
/ 13 января 2010

Этот код отлично работает для меня. Получаете ли вы какие-либо предупреждения компилятора о «нераспознанном селекторе»?

0 голосов
/ 13 января 2010

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

Вы можете проверить это:

 if (![passworde isKindOfClass:[NSString class]] || ![usernamee isKindOfClass:[NSString class])
  {
    NSLog(@"Some problem with your preferences");
  }

isKindOfClass Документация

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