gpt4 book ai didi

iphone - CoreData - 如何使用 NSPrivateQueueConcurrencyType 使用临时上下文执行 NSFetchRequest?

转载 作者:行者123 更新时间:2023-12-03 19:13:47 24 4
gpt4 key购买 nike

自 iOS 5 起,CoreData 引入了自己的私有(private)队列,您可以在其中让某些操作(特别是保存上下文)在后台运行。

这必须通过[context PerformBlock:...]完成。

这对于保存上下文来说非常简单。但是,对于 NSFetchRequest 又如何呢?我的意思是,如果我想获取某些东西并希望在后台获取怎么办?我认为 [context PerformBlock..] 无法实现这一点。

还有新的方法吗?

最佳答案

任何涉及 NSPrivateQueueConcurrencyTypeNSManagedObjectContext 的内容都应该包装在 performBlock block 中。对于后台获取,您要将托管对象传递回主队列的上下文,如下所示:(请注意,这仅用于说明目的):

// assume self.managedObjectContext is a main queue context
NSManagedObjectContext *backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundContext performBlock:^{
// do your fetch - e.g. executeFetchRequest
NSManagedObjectID *objID = [someManagedObject objectID];
[self.managedObjectContext performBlock:^{
NSManagedObject *mainManagedObject = [self.managedObjectContext objectWithID:objID];
// do something now with this managed object in the main context
}];
}];

关于iphone - CoreData - 如何使用 NSPrivateQueueConcurrencyType 使用临时上下文执行 NSFetchRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com