2016-08-08 5 views
2

Parse Ich bin neu in swift Sprache, Newbie Frage, aber ich muss fragen, weil mein Geist ist etwas verwirrt über Wörterbuch und Array-Verwendung hier, ich habe eine JSON wie folgt;Wie man JSON mit mehr als einem Array in Swift

{ 
    "MainPageLast": [ 
    {}, 
    {}.. 
    ], 
    "MainPageSport": [ 
    {}, 
    {}.. 
    ], 
    "MainPageEco": [ 
    {}, 
    {}.. 
    ], 
    "MainPagePol": [ 
    {}, 
    {}.. 
    ] 
} 

Ich machte Basisklasse, die alle diese Arrays als Wörterbuch wie folgt enthält;

Und ich versuche, Daten zu bekommen und zu parsen und wollen die zurückkehrenden Daten im Debug-Bildschirm sehen;

func loadHeadline(completion : ((AnyObject) -> Void)!) { 

     let urlString = "http://myapiurl." 

     let session = NSURLSession.sharedSession() 
     let newsUrl = NSURL(string: urlString) 

     let task = session.dataTaskWithURL(newsUrl!, completionHandler: { 
      (data, response, error) -> Void in 

      do { 
       let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! Dictionary<String, AnyObject> 

       var models:[Json4Swift_Base] = [] 
       for item in jsonData 
       { 
        models.append(Json4Swift_Base(dictionary: item as NSDictionary)!) 
       } 

      } catch let error as NSError{ 
       print("Failed to load: \(error.localizedDescription)") 
      } 

     }) 
     task.resume() 
    } 

Ich weiß, dass ich erreichen muss jeder [0], [1] ... Elemente nacheinander in Json4Swift_Base Klasse, aber ich konnte wirklich nicht verstehen, wie.

Diese Exception wirft, wenn ich versuche zu

models.append 

exc_bad_instruction (code=exc_i386_invop subcode=0x0) 

Nun, welchen Weg soll ich folgen oder was alle Daten in einem zu tun zu bekommen und setzen.

Vielen Dank im Rat ..

+0

haben Sie einen Beispieldatensatz des json haben würden Sie damit umgehen? Ich kann es auf einem Spielplatz versuchen – Scriptable

+0

@Scriptable können Sie bitte den ersten Codeblock überprüfen. Brauchen Sie mehr Informationen? Vielen Dank. –

+0

es wäre praktisch zu wissen, was in dem Array auch ich denke – Scriptable

Antwort

2
let jsonData = try NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMappedIfSafe) 
       do { 
        let jsonResult = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers) as! NSArray 

        if let allData = jsonResult[0] as? NSDictionary { 
         let header = allData.objectForKey("MainPageMansetData") 
         let magazine = allData.objectForKey("MainPageMagazineData") 
         let sports = allData.objectForKey("MainPageSportsData") 
         let articles = allData.objectForKey("MainPageOtherArticles") 

         print("\(header) \n \(magazine) \n \(sports) \n \(articles)") 
        } 
       } catch {} 
+0

Können Sie den aktualisierten Codeblock überprüfen? In Json4Swift_Base gibt es auch einen Codeblock am Ende. So ist es ein Wörterbuch. Ich habe deine Antwort auch versucht und xcode sagt; "covert value type anyobject in nsdictionary in coercion .." –

+0

Was ist Ihre "http: // myapiurl" URL? Ich kann überprüfen –

+0

Das hat für mich funktioniert! Danke für die Antwort Kumpel. –

Verwandte Themen