2016-07-28 5 views
0

zu analysieren Ich weiß, es gibt mehrere Frage für die gleiche Frage, aber keiner von ihnen funktioniert für mich. Mein Code von NSData zu JSON zu konvertieren istWie JSON-Daten ohne Drittanbieter-Bibliothek in Swift 2

var locateData: NSData = NSData(contentsOfURL: location)! 

do { 

responseObject = try NSJSONSerialization.JSONObjectWithData(locateData, options: NSJSONReadingOptions(rawValue: 0)) as! NSDictionary 
let arrayStatuses: NSArray = responseObject["statuses"] as! NSArray 
print("Data items count: \(arrayStatuses.count)") 

} 

catch _ as NSError { 

} 

Druckzähldaten zeigen alway 1, ich brauche Modellklasse von Wörterbuch verfügbar innerhalb Array erstellen

hier ist meine Probe JSON

{ 
    "statuses": [ 
    { 
     "created_at": "Wed Jul 27 07:31:26 +0000 2016", 
     "name" :"shesh" 
    }, 
    { 
     "created_at": "Wed Jul 27 07:31:26 +0000 2016", 
     "name" :"shesh" 
    }, 
    { 
     "created_at": "Wed Jul 27 07:31:26 +0000 2016", 
     "name" :"shesh" 
    }, 
    { 
     "created_at": "Wed Jul 27 07:31:26 +0000 2016", 
     "name" :"shesh" 
    }] 
} 

Antwort

1

Verwenden Sie zunächst immer native Swift-Auflistungstypen, da die Foundation-Gegenstücke die wichtigen Typinformationen nicht besitzen.

Dieser Code druckt alle Werte für die Schlüssel text, truncated und created_at

let locateData = NSData(contentsOfURL: location)! 

do { 
    if let responseObject = try NSJSONSerialization.JSONObjectWithData(locateData, options: []) as? [String:AnyObject], 
    arrayStatuses = responseObject["statuses"] as? [[String:AnyObject]] { 
    print("Data items count: \(arrayStatuses.count)") 
    for status in arrayStatuses { 
     let created = status["created_at"] as! String 
     let truncated = status["truncated"] as! Bool 
     let text = status["text"] as! String 
     print("text: \(text), created: \(created), truncated: \(truncated)") 
    } 
    } 

} catch let error as NSError { 
    print(error) 
} 
+0

Dank tun können, aber es alles auf der Konsole nicht –

+0

Der Code drucken soll mit Ihrer Probe arbeiten JSON – vadian

+0

ok, lassen Sie mich mit Probe JSON –

1

Sie es mit Array enumerate()

var locateData: NSData = NSData(contentsOfURL: location)! 

do { 

responseObject = try NSJSONSerialization.JSONObjectWithData(locateData, options: NSJSONReadingOptions(rawValue: 0)) as! NSDictionary 
let arrayStatuses: NSArray = responseObject["statuses"] as! NSArray 
    for statue in arrayStatuses.enumerate(){ 
    print("Statue Name : \(statue.name)") 
    } 

} 

catch _ as NSError { 

} 
+1

'enumerate' ist nur nützlich, wenn Sie sowohl' element' als auch 'index' Informationen brauchen – vadian

+0

danke, (statue.name) war Syntaxfehler, also habe ich zum Drucken geändert (" Statuenname: \ (statue) ") und die Ausgabe wird gedruckt nur das erste Objekt des Arrays –