«NSInvalidArgumentException», причина: «- [SBJsonParser objectWithString: ошибка:]: нераспознанный селектор отправлен на экземпляр 0x6695330» - PullRequest
0 голосов
/ 10 января 2012

При создании вида входа в систему в приложении iphone я столкнулся с этой ошибкой:

'NSInvalidArgumentException', reason: '-[SBJsonParser objectWithString:error:]:
    unrecognized selector sent to instance 0x6695330'

Это исходит из этой строки:

NSDictionary *results = [parser objectWithString:json_string error:nil];

Из этого метода:

+ (BOOL)loginWithUsername:(NSString *)username password:(NSString *)password
{
    NSString *urlString = [NSString stringWithFormat:@"%@login3", ROSE_ROOT_URL];
    NSURL *url = [NSURL URLWithString:urlString];


    NSString *requestString = [NSString stringWithFormat:@"&mobile=1&username=%@&password=%@", username, password];


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:[NSData dataWithBytes:[requestString UTF8String] length:[requestString length]]];

    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

    [request release];
    // parse the JSON response into an object
    // Here we're using NSArray since we're parsing an array of JSON product objects
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSDictionary *results = [parser objectWithString:json_string error:nil];

    [json_string release];
    [parser release];


    //  NSDictionary *results = [RoseFetcher fetch:request]; 
    //  [request release];

    if ([[results objectForKey:@"password"] intValue] == 0)
        return NO;

    return YES;
}

Любая помощь или объяснение будет с благодарностью.

1 Ответ

3 голосов
/ 10 января 2012

Согласно документации для SBJsonParser, у него нет метода, называемого -objectWithString:error: - мнение, которое подтверждается вашими выводами во время выполнения.Попробуйте отправить ему сообщение, на которое ответит , например -objectWithString:.

...