json - 由于类型转换错误,无法对 JSON 数组进行分组

标签 json swift

我有一个返回字典数组的 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/

相关文章:

json - 从 API 解码 JSON - Swift 5

ios - 奇怪的 UITableView 行为

python - 在Python中解析具有多个JSON对象的文件

ruby-on-rails - 通过 JSON/XML 将二进制数据发送到 (Rails) RESTful 端点?

swift - 提高 Swift (3.0) 中高阶函数与循环的性能

ios - 使用 AVAudioSequencer 将 MIDI 发送到第三方 AUv3 乐器

swift - 类型删除 : Have I missed Anything?

PHP 和 MYSQL JSON API 查询

javascript - 如何通过json提取Chrome开发者工具的网络选项卡内容

java - 从 json 响应调用时 GSON 抛出错误