N每个父母传播一个子项目

时间:2016-11-14 09:48:55

标签: ios swift realm nspredicate

我正在使用Realm将所有数据存储在我的应用中。

我有一个商品,其中包含促销ID列表和促销,其中包含父商品属于商店的ID。

我现在过滤现在可用的每个促销,并且我想再添加一个过滤器,以便结果列表每个商店只包含一个促销。

如何完成过滤器,因此每个商店只能获得一个促销活动?

谢谢! // Kim

// EDIT

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)

1 个答案:

答案 0 :(得分:1)

Realm Swift currently doesn't natively support distinct,所以没有好办法做到这一点。你可以做的是手动构建一个不同值的数组:

let shops = NSMutableSet()
let promotions = self.realm?.objects(CSPromotions.self).filter(datePredicate).filter(parentPredicate).filter {
    let id = $0.shop.id
    if shops.contains(id) {
        return false
    }
    shops.add(id)
    return true
}