2016-04-29 13 views
3

Ich bin neu in Entwicklung und stackoverflow bitte hilf mir. Ich versuche, eine einfache Anwendung zu machen, wo die YQL Verbindung benutzt wird, um lokale Daten zu erhalten und sie im Tabellenformat anzuzeigen. Dafür konvertiere ich die Daten ins Wörterbuch, später möchte ich es in die Tabelle senden. Aber als ich versuchte, Daten in Dictionary zu konvertieren, heißt es null. Bitte hilf mir. Überprüfen Sie den Screenshot unten. Danke im Voraus.NULL von NSDictionary erhalten, wenn NSJSONSerialization verwendet wird

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 

Hier nahm ich json Abfrage in einen String (* str)

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

// NSString *stringFromData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
// NSLog(@"%@", stringFromData); 

Als ich versuchte, diese kommentierten Code im implementieren das Ergebnis bekommen, wie erwartet, aber ich möchte alle Daten setzen in Wörterbuch und zeigt es, so habe ich versucht, die Daten in Wörterbuch zu konvertieren

NSDictionary *dataFromWeb = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; 


NSDictionary *queryDict = [dataFromWeb objectForKey:@"query"]; 
NSDictionary *results = [dataFromWeb objectForKey:@"results"]; 
NSString *allResults = [queryDict objectForKey:@"Results"]; 

NSLog(@"%@", dataFromWeb); 

} 

enter image description here

+0

Verwenden Sie den Parameter 'error'. Es ist aus einem bestimmten Grund da. – rmaddy

Antwort

7

Die Antwort von Yahoo API ist standardmäßig XML. Sie sollten format=json zum Abfragezeichenfolgeflag um fügen Sie die Antwort in JSON Format zu erhalten, so dass Sie es mit NSJSONSerialization Klasse analysieren kann:

https://query.yahooapis.com/v1/public/yql?format=json&q=select... 
+0

Es funktioniert Danke viel :) –

1

Ihre Api Return XML-Daten, so dass Sie xml tun müssen, um das Parsen

NSJSONSerialization ist verwendet für json

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 

    NSURL *UrlFromStr = [NSURL URLWithString:str]; 

schlagen diese UrlFromStr in Ihrem Browser Parsen Sie sehen es xml-Daten zurückgeben nicht JSon

Verwenden Sie NSXMLParser zum Analysieren von XML-Daten

1

Verwenden Sie NSXMLParser, um XML-Daten anstelle von NSJSONSerialization zu analysieren. NSJSONSerialization wird zum Parsen von JSON-Daten verwendet.

Declare in .h-Datei

@property (nonatomic, strong) NSXMLParser *xmlParser; 

in .m-Datei.

NSString *str = @"https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20where%20zip%3D'94085'%20and%20query%3D'pizza'&diagnostics=true"; 
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 

self.xmlParser = [[NSXMLParser alloc] initWithData:data]; 
self.xmlParser.delegate = self; 

// Initialize the mutable string that we'll use during parsing. 
self.foundValue = [[NSMutableString alloc] init]; 

    // Start parsing. 
[self.xmlParser parse]; 
0

Das Format von Objekten Sie wollen Parse ist XML, aber Sie verwenden, um die Klasse von ParseJSON es zu analysieren, so dass er zurückkehren NULL.You die Klasse von NSXML verwenden kann es zu analysieren, und setzen dann ihre Delegierten auszuführen die damit verbundenen Methoden ... Viel Glück für Sie ..