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
}