[英]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.