2012-07-03 3 views
1

Я знаю, что это глупый вопрос, но я знаю, как это сделать. по этой ссылке the requested link можно вернуть данные json с помощью NSURLconnection? Я надеюсь, что кто-то проверит эту ссылку и скажет мне, возможно ли это, потому что я новичок в этом.NSURLconnection и json

EDIT:

я попытался с NSJSONSerialization

- (void)viewDidLoad 
{ 
    NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.goalzz.com/main.aspx?region=-1&area=6&update=true"]]; 
    connectionData = [[NSURLConnection alloc]initWithRequest:req delegate:self]; 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    Data = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [Data appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
NSError *jsonParsingError = nil; 
id object = [NSJSONSerialization JSONObjectWithData:Data options:0 error:&jsonParsingError]; 

if (jsonParsingError) { 
    NSLog(@"JSON ERROR: %@", [jsonParsingError localizedDescription]); 
} else { 
    NSLog(@"OBJECT: %@", [object class]); 
} 
} 

и я получаю сообщение об ошибке в консоли:

JSON ОШИБКА: Операция не может быть завершена. (Ошибка какао 3840.)

+0

Прежде всего, этот URL-адрес не возвращает JSON. Во-вторых, NSURLConnection не предоставляет встроенный анализатор JSON, поэтому для этого вам придется использовать стороннюю библиотеку. [TouchJSON] (https://github.com/TouchCode/TouchJSON) - это один из вариантов. –

+0

спасибо @ Антон Holmquist.so с ToushJSON Я могу получить данные, чтобы разобрать его ?. – adellam

+0

Нет. Подумайте, как получить данные и разделить их на две отдельные задачи. Сначала выберите его с помощью NSURLConnection или любой другой библиотеки запросов, затем проанализируйте его с помощью TouchJSON или любой другой библиотеки синтаксического анализа. –

ответ

10

Как указано выше, эта ссылка не возвращает JSON. Однако, если вы имеете такую ​​ссылку, вы можете использовать класс NSJSONSerialization для анализа данных JSON в классы Objective-C:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946

Объедините это с NSURLConnection, и вы можете делать то, что вы спрашиваете. Вот прогулка по реализующего NSURLConnection:

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html#//apple_ref/doc/uid/20001836-BAJEAIEE

И вот набросок того, что вам нужно. Очевидно, что это не рабочий код:

- (void)downloadJSONFromURL { 
    NSURLRequest *request = .... 
    NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self]; 
    // ... 
} 

NSMutableData *urlData; 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    urlData = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [urlData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSError *jsonParsingError = nil; 
    id object = [NSJSONSerialization JSONObjectWithData:urlData options:0 error:&jsonParsingError]; 

    if (jsonParsingError) { 
     DLog(@"JSON ERROR: %@", [jsonParsingError localizedDescription]); 
    } else { 
     DLog(@"OBJECT: %@", [object class]); 
    } 
} 
+0

спасибо @Chris H, я попробую это. – adellam

Смежные вопросы