由于类型转换错误,无法将JSON数组分组

时间:2018-12-13 22:15:39

标签: json swift

我有一个API,该API返回一个字典数组,我正在尝试使用Swift的date函数通过每个项目中的Dictionay(grouping:)键对它进行分组。 JSON如下所示:

[
    { "date": "2018-12-12", "name": "abc" },
    { "date": "2018-12-12", "name": "def" },
    { "date": "2018-12-13", "name": "def" },
    ...
]

我有以下快速代码会生成编译错误:

let json = response.result.value as! Array<[String:AnyObject]>
let groupedByDate = Dictionary(grouping: json, by: { (item) -> String in
    return (item as! [String:AnyObject])["date"]
})

编译时出现此错误:

Cannot subscript a value of type '[String : AnyObject]' with an index of type 'String'

和此警告:

Cast from '_' to unrelated type '[String : AnyObject]' always fails

我很困惑,因为item变量显然是[String:AnyObject]类型,并且通过执行po json[0]["date"]我能够在调试器中索引到json。

1 个答案:

答案 0 :(得分:2)

您的代码自相矛盾。当你说

let groupedByDate = Dictionary(grouping: json, by: {
    (item) -> String in

您正在签订合同,将从此封包中返回一个字符串。

但是当你说

return (item as! [String:AnyObject])["date"]

您要返回的是AnyObject,而不是字符串。