在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]]
即可。
看来您是在作为[String: AnyObject]
实例的map函数中返回 jsonRepresentation ,而Swift 3不再隐式将[String: AnyObject]
转换为AnyObject
。
static func jsonArray(array : [LogInfo]) -> [[String: AnyObject]] {
return array.map{$0.jsonRepresentation}
}
关于ios - 数组映射在Swift 3中不再起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840461/