问题现象
从 Swift 5.5 开始, 为我们引入了新的 async/await 并发模型,使用它我们可以用更简洁的代码来实现复杂的并发功能。
async/await 并发模型同时也对大部分系统框架中的类型做了扩展,让它们在并发上重新“焕发青春”。
不过,我们在用新并发模型撸码的过程中,有些典型问题也会让人“愁城难解”:
如上图所示,编译器“怨气满腹”的警告着我们: NSPredicate 和 NSManagedObjectContext 两个 Non-sendable 类型的对象不能跨越 actor 边界(cannot cross actor boundary)
这是什么原因?又该如何消除这些警告呢?
本篇博文将会详细讨论并解决这些问题,小伙伴们还等什么呢?
Let‘s go!!!😉
问题分析
1. 追本溯源
我们首先贴出完整源代码,当然其中 evalP