ios - 带有函数的 NSPredicate

标签 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 上。我尝试了一个 block ,但我不确定如何做到这一点。 请注意,我希望在最后使用 isSameDays 有一个 NSPredicate。

我还想将具有这 3 个约束的 Predicate 传递给 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
            )
        }

最佳答案

根据 https://realm.io/docs/swift/latest/#filtering , Realm 支持有限的谓词列表和基于函数的谓词 不在该列表中。

获取某一天的对象,比如

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

应该可以工作,其中 startDateendDate 被计算为 那天的开始和第二天的开始。

关于ios - 带有函数的 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34529722/

相关文章:

ios - 未知类型名称 UITableView

ios - 如何为 iOS/swift 自动获取带有刷新 token 的访问 token ?(每小时)

ios - 对于频繁重复的常量,我该怎么办?

java - 迁移两个 Realm 实例之一

realm - Realm 中 copyToRealm() 的用例示例

ios - 使用 Facebook SSO 作为唯一登录机制对 iOS 客户端的 REST API 进行身份验证

ios - 如何在后台以固定时间间隔重启 CoreBluetooth 管理器实例

ios - swift 在不同的 UnsafePointer<T> 之间进行转换

ios - 无法从像 XMLParser 这样的异步函数调用 Segue

ios - 使用 Realm 和 circleCI(使用 Carthage)构建失败