【发布时间】:2019-09-25 14:41:57
【问题描述】:
我已经在多线程环境中实现了核心数据,我对此有一些疑问和问题,我在下面列出:-
-
几个博客和 SO 答案说你应该有一个
NSPersistentStoreCoordinator(PSC) 但根据我的理解,“PSC”应该等于 ManagedObjectModel 的数量。如果我错了,请纠正我。 -
根据文档,ManagedObjectContext 对象应该等于我们为在特定模型中执行活动而创建的线程数。令我惊讶的是,我使用了来自不同线程的单个 ManagedObjectContext 对象并同时执行获取操作而没有任何崩溃,请找到以下代码:-
我从不同的线程调用下面的函数,并确保只创建一个 MOC 实例。请清除我上面所有的疑惑
func fetchUserDetail(productId : Int) -> User_Details? {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "User_Details")
do {
fetchRequest.predicate = NSPredicate(format: "product_id == %d", productId)
let results:[User_Details]? = try (singleinstancemanagedObjectContext.fetch(fetchRequest) as? [User_Details])
if let results = results {
..... logic .....
}
} catch let error as NSError {
}
return nil
}
【问题讨论】:
标签: swift multithreading core-data