簡體   English   中英

數組映射不再適用於 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{$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
        ]
    }
}

在此代碼中,我的代碼中間的方法“jsonArray”返回此錯誤:

“'[String: AnyObject]' 類型的結果值不符合閉包結果類型 'AnyObject'”

正如您從下面的 jsonRepresentation 中看到的,json 數據將包含各種不同的數據類型。

我試圖將 jsonRepresentation 數組中的每個元素轉換為“AnyObject”,正如您所看到的(xCode 建議我在升級向導中這樣做) - 但我的數組映射仍然出現上述錯誤。

任何想法如何解決?

只需將jsonArray方法中的[AnyObject]更改為[[String: AnyObject]]即可

似乎您在映射函數中返回了jsonRepresentation ,它是[String: AnyObject]實例,而 Swift 3 不再隱式地將[String: AnyObject]轉換為AnyObject

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM