Подтвердить что ты не робот

[__NSCFNumber length]: непризнанный селектор, отправленный в экземпляр 0x6d21350

Что может означать эта ошибка?

[__NSCFNumber length]: unrecognized selector sent to instance 0x6d21350

Вот мой код:

    NSString *urlString = @"http://api.twitter.com/1/statuses/update.json";
    NSURL *url = [NSURL URLWithString:urlString];

    NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
    [params setObject:status forKey:@"status"];
    [params setObject:replyToID forKey:@"in_reply_to_status_id"];
    [params setObject:@"1" forKey:@"include_entities"];

    // Build the request with our parameter
    TWRequest *request = [[TWRequest alloc] initWithURL:url parameters:params requestMethod:TWRequestMethodPOST];

    // Attach the account object to this request
    [request setAccount:twitterAccount];

    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
        if (!responseData) {
            // inspect the contents of error 
            NSLog(@"%@", [error localizedDescription]);

            self.alert = [[UIAlertView alloc] initWithTitle:@"HTTP error" message:@"I could not connect to the Twitter API." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
            [self.alert show];

            [self.replyDelegate replyRequestSuccessful:NO];
        }
        else {
            /*NSString *responseDataAsString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
             NSLog(responseDataAsString);*/

            NSError *error;
            NSArray *replyResponse = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];

            if (!replyResponse) {
                NSLog(@"%@", [error localizedDescription]);

                self.alert = [[UIAlertView alloc] initWithTitle:@"JSON error" message:@"I could not parse the JSON response from the Twitter API." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
                [self.alert show];

                [self.replyDelegate replyRequestSuccessful:NO];
            }
            else {
                [self.replyDelegate replyRequestSuccessful:YES];
            }
        }
    }];

Я попробовал debuggin, и он умирает, когда он входит в performRequestWithHandler. Он переходит в блок else и умирает с ошибкой выше.

4b9b3361

Ответ 1

Это означает, что вы передаете NSNumber, где вызываемый код ожидает NSString или какой-либо другой объект, имеющий метод length. Вы можете сказать, что Xcode прерывает исключения, так что вы видите, где именно вызывается метод length.

Ответ 2

В частности, эта строка кода:

[params setObject:replyToID forKey:@"in_reply_to_status_id"];

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