另一种创建 NSPersistentHistoryChangeRequest.fetchRequest 过滤的方法
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了另一种创建 NSPersistentHistoryChangeRequest.fetchRequest 过滤的方法相关的知识,希望对你有一定的参考价值。
概览
我们知道,要想进一步过滤 NSPersistentHistoryChangeRequest.fetchRequest 持久存储事务请求的结果,我们需要通过断言来设置它的 fetchRequest 属性:
之前讨论过 NSPersistentHistoryTransaction.fetchRequest 总返回 nil的处理方法:
CoreData事务记录查询(Query)中NSPersistentHistoryTransaction.fetchRequest总返回nil的解决
除了以上方法以外,我们还可以自己手动创建一个带断言的 Request 供 NSPersistentHistoryChangeRequest.fetchHistory() 使用。
废话少叙, Let’s go!!! 😉
另一种方法
在这里,我们完全靠自己丰衣足食来创建请求,而不是使用 NSPersistentHistoryTransaction.fetchRequest 返回的结果:
// 从托管上下文中获取数据库实体的描述
let changeDesc = NSPersistentHistoryChange.entityDescription(with: backgroundContext)
// 创建请求
let request = NSFetchRequest<NSFetchRequestResult>()
// 妥善设置请求的实体以及断言
request.entity = changeDesc
request.predicate = NSPredicate(format: "%K = %@", #keyPath(NSPersistentHistoryTransaction.author), Common.CloudImportAuthor)
// 使用该请求
phChangeRequest.fetchRequest = request
如上代码所示,我们没有通过 NSPersistentHistoryTransaction.fetchRequest 返回请求,而是自己创建了对应的请求对象,然后设置其实体和断言属性,最后将其放入 phChangeRequest 中。
正所谓条条大路通罗马,是不是也很简单呢?😎
总结
在本篇博文中,我们不通过 NSPersistentHistoryTransaction.fetchRequest 而是自己创建了过滤请求对象,用它我们同样可以过滤持久存储事务请求的结果,棒棒哒!💯
感谢观赏,再会!
以上是关于另一种创建 NSPersistentHistoryChangeRequest.fetchRequest 过滤的方法的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6.0 在为一种用户创建和更新时验证密码是不是存在,但只为另一种用户更新
创建可在另一种语言上调用的 win32api(dll) [关闭]