我有一个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。
答案 0 :(得分:2)
您的代码自相矛盾。当你说
let groupedByDate = Dictionary(grouping: json, by: {
(item) -> String in
您正在签订合同,将从此封包中返回一个字符串。
但是当你说
return (item as! [String:AnyObject])["date"]
您要返回的是AnyObject,而不是字符串。