2016-10-03 6 views
1

In Swift 2, ich hatte die folgende Struktur Setup:Array-Mapping nicht mehr in Swift Arbeits 3

struct LogInfo { 
    var logNumber: Int 
    var logID: String 
    var species: String 
    var diameter: Float 
    var formClass: Int 
    var numLogs: Float 
    var boardFootage: Double 

    static func jsonArray(array : [LogInfo]) -> [AnyObject] { 
     return array.map{$0.jsonRepresentation} 
    } 

    var jsonRepresentation : [String: AnyObject] { 
     return [ 
      "logNumber": String(logNumber) as AnyObject, 
      "logID": logID as AnyObject, 
      "species": species as AnyObject, 
      "diameter": String(diameter) as AnyObject, 
      "formClass": String(formClass) as AnyObject, 
      "numLogs": String(numLogs) as AnyObject, 
      "boardFootage": String(boardFootage) as AnyObject 
     ] 
    } 
} 

In diesem Code die Methode "jsonArray" in der Mitte von meinem Code, gibt diesen Fehler zurück:

„Ergebnis Wert vom Typ‚[String: ANYOBJECT]‘entspricht nicht Schließung Ergebnistyp‚ANYOBJECT‘“

Wie Sie aus dem jsonRepresentation unten sehen können, die jSON-Daten wird ein Sortiment enthalten verschiedener Datentypen.

Ich habe versucht, jedes Element in der JsonRepresentation-Array als "AnyObject" zu werfen, wie Sie sehen können (welche xCode schlug ich im Upgrade-Assistenten) - aber ich bekomme immer noch den oben genannten Fehler mit meiner Array-Mapping.

Irgendwelche Ideen wie zu beheben?

Antwort

4

Durch einfaches Ändern [AnyObject] zu [[String: AnyObject]] in jsonArray Methode funktionieren würde.

Es scheint, dass Sie jsonRepresentation innerhalb der Map-Funktion zurückkehren, die [String: AnyObject] Instanz ist, und Swift 3 [String: AnyObject] zu AnyObject nicht implizit mehr konvertieren.

static func jsonArray(array : [LogInfo]) -> [[String: AnyObject]] { 
    return array.map{$0.jsonRepresentation} 
} 
Verwandte Themen