【发布时间】:2016-11-14 09:48:54
【问题描述】:
我正在使用 Realm 将所有数据存储在我的应用程序中。
我有一个商店商品,其中包含促销 id 列表和促销,其父属性是商店的 id。
我现在过滤所有可用的促销活动,并且我想再添加一个过滤器,以便结果列表中每个商店只包含一个促销活动。
我怎样才能完成过滤,这样我每家商店只能获得一个可用的促销活动?
谢谢! // 金
//编辑
let startDate: Double = currentDate.timeIntervalSince1970
let endDate: Double = currentDate.timeIntervalSince1970
let parentPredicate = NSPredicate(format: "")
let datePredicate = NSPredicate(format: "SUBQUERY(dates, $d, $d.start <= \(startDate) && $d.end >= \(endDate)).@count > 0")
self.realm?.objects(CSPromotions.self).filter(datePredicate).filter(parentPredicate)
【问题讨论】:
-
您可以使用 AND 运算符来连接多个过滤器。
let predicate = NSPredicate(format: "color = %@ AND name BEGINSWITH %@", "tan", "B")。请按照文档realm.io/docs/swift/latest/#filtering -
我知道这一点,但是如何过滤掉所有具有相同父级的促销活动,因此每个父级只有一个促销活动?如何编写谓词查询?
-
你能分享你的代码吗?我的意思是你已经尝试过什么?没有代码很难给你建议。
-
我已经在上面添加了我的代码。我还没想好怎么解决。因此,如果我得到所有有效的促销,同一家商店可以在该结果中有 5 次促销。我想过滤掉其中的4个,所以只有一个。我可以在谓词中使用它,因为它比在列表上进行过滤要快。
-
如果你想根据父
let parentPredicate = NSPredicate(format: "parentid = %@ ", relamobject.parentid)过滤促销,我认为应该是这样的
标签: ios swift realm nspredicate