数组映射不再适用于 Swift 3

Array mapping no longer working in Swift 3

在 Swift 2 中,我有以下结构设置:

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{[=11=].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
        ]
    }
}

在这段代码中,我代码中间的方法"jsonArray",returns这个错误:

"Result value of type '[String: AnyObject]' does not conform to closure result type 'AnyObject'"

从下面的 json 表示中可以看出,json 数据将包含各种不同的数据类型。

我试图将 json 表示数组中的每个元素转换为 "AnyObject",如您所见(xCode 建议我在升级向导中这样做)- 但我我的数组映射仍然出现上述错误。

有什么解决办法吗?

只需将 jsonArray 方法中的 [AnyObject] 更改为 [[String: AnyObject]] 即可。

看来你在map函数里面返回jsonRepresentation[String: AnyObject]实例,而且Swift3没有隐式转换[String: AnyObject]AnyObject 了。

static func jsonArray(array : [LogInfo]) -> [[String: AnyObject]] {
    return array.map{[=10=].jsonRepresentation}
}