NSPredicate具有功能

时间:2015-12-30 12:37:42

标签: ios swift realm

如何使用NSPredicate功能? 例如,我有一个日期和这个功能:

let date= NSDate() 
func isSameDays(date1:NSDate?, _ date2:NSDate?) -> Bool { //Code }

然后我有一个具有日期属性的对象数组:

let arr = [o1, o2, o3] that i want to filter

如何使用NSPredicate过滤我的功能?

isSameDays(object.date, date)?

这里我不知道如何将此功能应用于NSPredicate。我尝试了一个块,但我不知道如何做到这一点。 请注意,我希望在决赛中使用isSameDays获得NSPredicate。

我想通过这3个约束传递给getObjects也是一个谓词。

let p1 = NSPredicate(format: "user == %@", argumentArray: [user])
let p2 = ...?
let finalP = NSCompoundPredicate(andPredicateWithSubpredicates: [p1, p2])

    let visits = database.getObjects(Visit) 
        .filter { visit -> Bool in
            return (
                statuses.contains(visit.visitStatus)
                    && isSameDays(visit.dateVisit, date)
                    && visit.user == user
            )
        }

1 个答案:

答案 0 :(得分:2)

根据https://realm.io/docs/swift/latest/#filtering,领土 支持有限的谓词列表和基于函数的谓词 不在那个名单上。

从某一天检索对象,例如

NSPredicate(format: "date >= %@ && date < %@", startDate, endDate)

应该有效,其中startDateendDate计算为。{ 那天的开始和第二天的开始。