【发布时间】:2017-01-03 02:51:31
【问题描述】:
下面这段代码的目的是过滤掉具有特定 ID 的字典,其中 ID 是一个字符串。
let dictArray = networkData["dicts"] as! [[String:AnyObject]]
localData["dicts"] = dictArray.filter{ ($0["id"] as! String) != sample.getId() }
但是,此代码会产生错误:
不能使用类型为 '(([String : AnyObject]) 抛出 -> Bool)'
根据 this one 和 this one 等其他 SO 答案,似乎错误是字典不符合 Equatable。
那么使用filter 创建一个自定义类来保存字典数组并使该类符合Equatable 的唯一选择是什么?
如果是这样,也许简单地迭代并创建一个新数组似乎更简洁。
【问题讨论】:
-
什么是散列对象?
-
请务必定义
filteredData: [String: [[String: AnyObject]]] -
@Alexander 他的意思可能是字典
-
@matt 这就是我的怀疑,但他没有在任何地方比较字典的相等性
-
我建议将
let id = sample.getId()从过滤器块中声明出来并使用id代替。