2016-07-02 5 views
0

Ich habe einen Code, der einwandfrei funktioniert und keine Warnungen zum Parsen von JSON von meinem Server auslöst. Es läuft und gibt die Werte in der Konsole ohne Probleme zurück, bis ich versuche, das AWSNS-Framework zu importieren, woraufhin es die Warnung im Titel anzeigt und beim Ausführen abstürzt mit der Aussage "- [__ NSCFArray length]: unerkannter Selektor an Instanz gesendet". Irgendwelche Ideen, warum dies fehlschlagen könnte, wenn ich das SNS-Framework von Amazon importiere?Aus 'String ?!' zu nicht verwandtem Typ '[[String: AnyObject]]' schlägt immer fehl

Hier ist mein Code:

import UIKit 
import AWSSNS 

class ViewController: UIViewController { 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.getEvents() 
} 
func getEvents(){ 
    let requestURL: NSURL = NSURL(string: "http://www.example.com/mydirectory/JSONFile")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { 
     (data, response, error) -> Void in 
     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 
     if (statusCode == 200) { 
      print("File downloaded successfully.") 
      do{ 
       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 
       if let events = json["events"] as? [[String: AnyObject]] { 
        for event in events { 
         if let eventName = event["eventName"] as? String { 
          if let day = event["day"] as? String { 
           print(day,eventName) 
          } 
         } 
        } 
       } 
      }catch { 
       print("Error with Json: \(error)") 
      } 
     } 
    } 
    task.resume() 
} 
+0

Die Warnung erscheint in der Zeile "if let events = json [" events "] as? [[String: AnyObject]]" –

+0

Klicken Sie mit der linken Maustaste auf json, um zu sehen, welchen Typ Xcode die Variable hat, beide mit und ohne den Import – Feldur

Antwort

0
if let events = json["events"] as? [[String: AnyObject]] { 

Sie wahrscheinlich eine Zeichenfolge in das JSON haben, während Sie versuchen, es in ein Wörterbuch zu werfen, das wird nicht funktionieren.

Setzen Sie hier einen Haltepunkt und überprüfen Sie, ob der Inhalt Ihres JSON überprüft werden soll.

+0

habe ich meinen JSON zu dem folgenden vereinfacht: {"Mitarbeiter": [ {"Vorname": "John", "Nachname": "Doe"}, {"firstName": "Anna", "lastName ":" Smith "}, {" firstName ":" Peter "," lastName ":" Jones "} ]} Es funktioniert einwandfrei und gibt die richtigen Werte an die Konsole zurück, bis ich das AWSSNS-Framework importiere ... dann es versagt wie oben beschrieben. –

+0

Ich bekomme die Warnung, sobald ich das AWSSNS-Framework import auslasse ... also hat es noch nichts geparst, weil es nicht läuft. –

0

"-[__NSCFArray length]: unrecognized selector sent to instance"

Ich glaube nicht, Ihr Problem von JSON kommen. Wenn Sie JSON parsen können, ist das kein Problem mit JSON. Überprüfen Sie selector.

Verwandte Themen