2016-08-02 12 views
0

Ich versuche, ein UITableView aus den Ergebnissen eines Aufrufs an einen Webdienst aufzufüllen. Die Daten werden in JSON Format zurückgegeben, wie untenBeim Analysieren von JSON-Daten aus dem Webdienst wurden keine Daten zurückgegeben.

[{"name":"CONTROL TEST", 
"nc_lead":"TOM SMITH", 
"datastr":"N/A", 
"username":"tsmith", 
"status":"REOPENED", 
"orderno":"00000000", 
"ccsText":"000", 
"risk":0, 
"dateTimeCreated":"2016-01-29 13:16:50", 
"supplyStart":"2016-02-08T11:51:00+0000", 
"supplyEnd":"2016-02-08T12:03:00+0000", 
"logs": 
    [{"dateTime":"2016-02-02 11:26:18", 
    "statusChangeDateTime":"2016-02-02 00:00:00", 
    "user":"tsmith", 
    "uid":1, 
    "task":"TESTING", 
    "info":"state changed to 'Y'", 
    "x":456123, 
    "y":362514, 
    "id_log":28294}, 
    {“dateTime":"2016-02-02 10:54:34", 
     "statusChangeDateTime":"2016-02-02 10:54:00", 
    "user":"tsmith", 
    "uid":1, 
    "task":"TESTING", 
    "info":"T Smith changed area.", 
    "x":452356, 
    "y":325489, 
    "id_log":28291 
    },..... 

Es gibt keinen Schlüssel wie der erste Teil 12 durch Werte als Header gebildet wird, und dann die Stämme bilden ein Array von Werten für jeden Header. Ich gebe mein JSON-Objekt mit dem folgenden Code zurück und analysiere das Datenobjekt von meinem Web-Service-Aufruf.

let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 

kann ich den Rückgabewert für Daten sehen Sie den Code unten

let str = NSString(data: data!, encoding: NSUTF8StringEncoding) 

verwenden, dann habe ich eine solche Verwendung von Code versucht, wie der Code unter Wert zu extrahieren für ‚Name‘, aber es doesn‘ t Arbeit

if let name = json["name"] as? [[String: AnyObject]] {} 

Wie kann ich durch meine json Objekt iterieren die Daten aus dem Header zu erhalten und die Protokolle Array?

+1

Ihre json ist Array von Wörterbuch und "name" ist Zeichenfolge –

+0

try json [0] [ "name"] –

+0

Was Sie von dieser Linie erhalten: 'lassen json = versuchen NSJSONSerialization.JSONObjectWithData (Daten !, Optionen: .AllowFragments) '? hast du 'josn' gedruckt? – Lion

Antwort

1

Es scheint json Objekt ein Array von Wörterbuch ist, so sollten Sie etwas tun:

if let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) as? Array<Dictionary<String, AnyObject>> { 
    for item in json { 
     if let dict = item as? Dictionary<String, AnyObject> { 
      print(dict["name"]) 
     } 
    } 
} 

Die Umstellung auf AnyObject sein sollte, weil manchmal der Wert String ist, wie zum Beispiel dict["name"] == "CONTROL TEST", aber dict["logs"] ist Array<Dictionary<String, String>>. Siehst du es?

+0

Vielen Dank für Ihre Antwort, was ist Anydata? – user616076

+1

Sorry, ich meinte 'AnyObject', siehe aktualisierte Antwort. –

+0

Das funktionierte ein Leckerbissen, danke – user616076