gpt4 book ai didi

ios - 使用 MagicalRecord 在后台执行获取请求

转载 作者:行者123 更新时间:2023-11-29 12:49:22 26 4
gpt4 key购买 nike

这是我目前所拥有的:

NSManagedObjectContext *privateContext = [NSManagedObjectContext MR_context];
[privateContext performBlock:^{
Cat* object = [Cat MR_findFirstByAttribute:@"id" withValue:catId inContext:privateContext];
// Convert your fetched objects into object IDs which can be pulled out of the main context
NSString *privateObjectID = [object valueForKey:@"objectID"];

// Return to our main thread
dispatch_async(dispatch_get_main_queue(), ^{
???
});
}];

这是正确的做法吗?如果是这样,我如何让我的对象回到主线程? (上面的 ??? 区域)

如果我这样做:

NSManagedObjectContext* context = [NSManagedObjectContext MR_contextForCurrentThread];
Cat* object = [Cat MR_findFirstByAttribute:@"id" withValue:catId inContext:context];

UI 被阻塞了,所以我想弄清楚如何在不阻塞主线程的情况下进行提取。

最佳答案

block 内的代码(在主线程上执行的代码)应该是:

NSManagedObjectContext* c = [NSManagedObjectContext MR_contextForCurrentThread];
Cat* o = (Cat*)[context objectWithID:object.objectID];
//access `o` so it will get faulted in by the main context
//I think you could use: [o valueForKey:nil] or [o didAccessValueForKey:nil]

重要的是在从主上下文访问它们时将 BG 获取的对象保存在(协调器)缓存中。

关于ios - 使用 MagicalRecord 在后台执行获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22794913/

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