Почему это заканчивается? - PullRequest
0 голосов
/ 26 августа 2011
responseData = [[NSMutableData data] retain];
 NSString *requestString = [NSString stringWithFormat:@"http://api.yelp.com/business_review_search?term=&lat=%f&long=%f&radius=10&limit=20&ywsid=XXXXXXXXXX&category=%@",[[ListofLat objectAtIndex:i] floatValue], [[ListofLong objectAtIndex:i] floatValue],appDelegate.categoryField] ; 
//NSURL *url = [[NSURL alloc] initWithString:requestString];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestString]];
/*  NSData *tempData =[[NSData alloc] initWithContentsOfURL:url];
    NSString *Str = [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding];
    NSLog(@"%@",Str);*/
NSURLResponse *response = nil;
NSError *error = nil;
//getting the data
NSData *newData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//json parse
NSString *responseString = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding];
NSDictionary *jsonObject = [responseString JSONValue];
//Accessing JSON content
NSLog(@"message :  %@", [jsonObject objectForKey:@"message"] );
    NSArray *status = [jsonObject objectForKey:@"message"] ;
    NSLog(@"message :  %@", status );
            for(NSDictionary *response in status)
                    {
                        NSString *Resptxt =[response objectForKey:@"text"];
                        txtStatus=[Resptxt copy];
                    }

    if([txtStatus isEqualToString : @"OK"])
    {
        UIAlertView *info = [[UIAlertView alloc] initWithTitle:@"Info" message: @"The request completed without error. " delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [info show];
        [info release];
    }

Я использую приведенный выше код для разбора json.когда компилятор появляется в этой строке

NSString * Resptxt = [response objectForKey: @ "text"];

затем компилятор завершает работу и выдает эту ошибку

* Завершение приложения из-за необработанного исключения 'NSInvalidArgumentException', причина: '- [NSCFString objectForKey:]: нераспознанный селектор отправлен на экземпляр 0x6166490 '

содержит статус

' message ': {' code ': 0,' text ':' OK ','версия': '1.1.0'}}

В чем проблема?Как я это исправлю?

Ответы [ 3 ]

0 голосов
/ 26 августа 2011

Это не похоже на ошибку, с которой сталкивается компилятор.Скорее, это ошибка, с которой вы сталкиваетесь при запуске приложения.

Это указывает на то, что вы отправили сообщение objectForKey: на экземпляр строки, т.е. ответ является экземпляром строки.Однако это сообщение обычно отправляется экземпляру NSDictionary.

Я предполагаю, что ответ JSON имеет структуру, отличную от той, которую вы ожидаете.В частности, он более глубоко вложен, чем предполагает ваш код.

Пожалуйста, опубликуйте полный ответ JSON, чтобы мы могли оказать вам более конкретную помощь.

0 голосов
/ 26 августа 2011

Похоже, происходит, что объекты в статусе - это не словари, а строки.Ошибка, которую вы получаете, говорит, что когда вы вызываете objectForKey: эта nscfstring не отвечает на него.

0 голосов
/ 26 августа 2011

Переменная ответа возвращается как NSString (NSCFString), а не как NSDictionary.NSString не имеет метода objectForKey, поэтому приложение вылетает с этой ошибкой при вызове NSString *Resptxt =[response objectForKey:@"text"];

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