2016-06-30 4 views
2

Ich habe diesen Code zum Lesen von JSON-Dateien, die ich versuche, in eine Swift 3-Umgebung zu bewegen. Hier ist sie:Swift to Swift 3 Code-Konvertierungen: Lesen von JSON-Dateien

do { 
    let dictionary = try NSJSONSerialization.JSONObjectWithData(dataOK, options: NSJSONReadingOptions()) as AnyObject! 
     dictionaryOK = (dictionary as! NSDictionary as? Dictionary <String, AnyObject>)! 
    } 
catch { 
    print("Level file '\(filename)' is not valid JSON: \(error)") 
    return nil 
} 

Xcode Vorschläge gibt einige Fehler zu beheben (wie einige Objekte und Klassen umbenannt wurden), die dies ergibt:

do { 
    //Problem here: parameters don't match overrides 
    let dictionary = try JSONSerialization.jsonObject(dataOK as Data, options: JSONSerialization.ReadingOptions()) as AnyObject! 
    dictionaryOK = (dictionary as! NSDictionary as? Dictionary <String, AnyObject>)! 
} 
catch { 
    print("Level file '\(filename)' is not valid JSON: \(error)") 
    return nil 
} 

, die keine der jsonObjects Überschreibungen übereinstimmt (es sagt). Ich habe die Dokumentation überprüft, die besagt, dass die Parameter für jsonObjects lauten sollten:

class func jsonObject(with data: Data, 
      options opt: JSONSerialization.ReadingOptions = []) throws -> AnyObject 

Was mache ich falsch?

Antwort

9

Ihr Swift 2-Code ist ziemlich ausführlich zu beginnen.

Versuchen Sie folgendes:

do { 
    if let dictionaryOK = try JSONSerialization.jsonObject(with: dataOK, options: []) as? [String: AnyObject] { 
     // parse JSON 
    } 
} catch { 
    print(error) 
}