首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CoreData是否可以从一个上下文/线程在另一个上下文/后台任务中安全地使用NSManagedObject

CoreData是否可以从一个上下文/线程在另一个上下文/后台任务中安全地使用NSManagedObject
EN

Stack Overflow用户
提问于 2019-12-10 04:27:18
回答 1查看 99关注 0票数 0

可以在不同的后台任务之间使用NSManagedObjects吗?我有这样的代码,在执行时使用.performBackgroundTask { context { NSManagedObjects }在一个上下文/后台任务上使用load()方法加载上下文

然后,我想执行另一个.performBackgroundTask { context,但问题是NSManagedObject似乎在那里不可用,因为从.performBackgroundTask {停止返回字段}开始的所有属性都不可用

代码语言:javascript
运行
复制
 self.load(predicate: NSPredicate(format: "company.id = %@", companyId))
            .flatMap { contacts in

                Future { promise in

                    self.storage.persistentContainer.performBackgroundTask { context in

                        let request : NSFetchRequest<Company> = Company.fetchRequest()
                        request.predicate = NSPredicate(format: "id = %@", companyId)

                        let result = try? context.fetch(request)
EN

Stack Overflow用户

发布于 2019-12-10 15:49:59

我建议您阅读Core Data concurrency overview以了解基础知识。

不管你的问题是什么。

您不能在上下文/线程之间直接传递托管对象。

您可以做的是从一个上下文传递objectIDs对象,并使用它们从另一个上下文/线程获取对象。

就性能而言,如果有许多对象,这可能不是一个好主意,我建议您使用单个上下文在一个performBackgroundTask中同时获取合同和公司。如果不想公开上下文的逻辑,可以将上下文作为参数传递给load函数。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59256095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档