另一种创建 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) [关闭]

创建线程的另一种方法:通过类创建(28-1)

另一种创建 NSPersistentHistoryChangeRequest.fetchRequest 过滤的方法

另一种创建 NSPersistentHistoryChangeRequest.fetchRequest 过滤的方法