我有一个返回字典数组的 API,我尝试使用 Swift 的 Dictionay(grouping:)
函数按每个项目中的 date
键对其进行分组。
JSON 如下所示:
[
{ "date": "2018-12-12", "name": "abc" },
{ "date": "2018-12-12", "name": "def" },
{ "date": "2018-12-13", "name": "def" },
...
]
我有以下生成编译错误的 swift 代码:
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]["日期"]
.
最佳答案
你的代码自相矛盾。当你说
let groupedByDate = Dictionary(grouping: json, by: {
(item) -> String in
您正在签订契约(Contract),您将从该闭包中返回一个字符串。
但是当你说
return (item as! [String:AnyObject])["date"]
您返回的是 AnyObject,而不是字符串。
关于json - 由于类型转换错误,无法对 JSON 数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770851/