NSPredicate 每个父项一个子项
NSpredicate one child item per parent
我正在使用 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)
领域Swiftcurrently doesn't natively support distinct,所以没有很好的方法来做到这一点。您可以做的是手动构建一个不同值的数组:
let shops = NSMutableSet()
let promotions = self.realm?.objects(CSPromotions.self).filter(datePredicate).filter(parentPredicate).filter {
let id = [=10=].shop.id
if shops.contains(id) {
return false
}
shops.add(id)
return true
}
我正在使用 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)
领域Swiftcurrently doesn't natively support distinct,所以没有很好的方法来做到这一点。您可以做的是手动构建一个不同值的数组:
let shops = NSMutableSet()
let promotions = self.realm?.objects(CSPromotions.self).filter(datePredicate).filter(parentPredicate).filter {
let id = [=10=].shop.id
if shops.contains(id) {
return false
}
shops.add(id)
return true
}