我有一个类似的数组: -
var arrayData : Array<Dictionary<String, [BottleModel]>> = []
瓶子模型: -
class BottleModel: NSObject {
var name : String
var price : Int
var reviews : Int
var category : String
var quantity : String
var id : String
var shopData : ShopModel
}
我想要价格为&gt的过滤数组; 2000
我尝试了let searchByInts = arrayData.filter({m in m.price < 200})
,但收到了以下错误:
上下文关闭 type&#39;(Dictionary) - &gt;布尔&#39;期待1个论点, 但在封闭体中使用了0
如何根据价格过滤此类阵列
答案 0 :(得分:1)
工作代码:
let searchByInts = arrayData.filter { $0.values.contains { $0.contains { $0.price > 2000 } } }
请顺便写下以下文字:
var arrayData : [[String : [BottleModel]]] = []
仍然不知道这是否是你真正想要的,因为你的目标非常不清楚。你有一个数组字典数组,它实际上包含你想要过滤掉的值。 如果一个BottleModel
的成本超过2000你想保留它所包含的整个数组和数组所在的字典吗?您可能希望在过滤之前或之后将整个数据映射到一个平面数组中。
替代使用flatMap
:
let flat = arrayData.flatMap { $0.values.flatMap { $0 } }
let searchByInts2 = flat.filter { $0.price < 200 } // or some other criteria