ios - 数组映射在Swift 3中不再起作用

标签 ios swift3 xcode8 array-map

在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/

相关文章:

ios - Swift:设置 AVAudioSession 输出音量

ios - 根据swift 3中 TextView 中给出的文本调整标签?

ios - 表格 View 中选择和取消选择单元格之间的差异

localization - 使用 XCode 8 和 Swift 3 时如何本地化应用程序名称

swift3 - 在 Xcode 中发现意外的 mach-o header 代码?

ios - 使用自定义关键字列表的语法高亮文本

iphone - 在不知道 url 方案的情况下启动应用程序

XCode 8 - 构建有效但存档失败 - React Native

ios - 如何创建样本缓冲区(CMSampleBufferRef)的实例?

swift - 错误调用函数(无法使用实例成员)