数组映射不再适用于 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}
}
在 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}
}