gpt4 book ai didi

ios - MagicalRecord + AFNetworking + NSFetchedResultsController,如何让它工作?

转载 作者:行者123 更新时间:2023-12-03 18:39:42 26 4
gpt4 key购买 nike

在我的应用程序中,我尝试同时使用 MagicalRecord + AFNetworking + NSFetchedResultsController 来同步数据并将其动态显示在 map 或 tableView 中。

让我们看一些下载方法的代码:

+ (void) getDataWithCompletionBlock: (void (^)(void)) block {

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URL_GET_DATA]];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for (NSDictionary *dict in JSON) {
[MyModel createOrUpdateMyModelFromDict:[dict mutableCopy]];
}

[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveInBackgroundCompletion:^{
[[NSManagedObjectContext MR_contextForCurrentThread] MR_saveNestedContexts];

block();
}];
});

} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
DDLogError(@"getDataWithCompletionBlock FAILURE: %@", error);
}];

[operation start];
}

我使用 AFJSONRequestOperation 下载数据,然后使用 GCD 和后台线程创建模型,为当前线程保存上下文并执行 successBlock(MagicalRecord 运行 successBlockdispatch_get_main_queue() 上,因此在 GUI 线程中调用。

这个同步模型可以吗?因为有时(在真实设备上比在模拟器上更常见)我从 NSFetchedResultsController 收到一些错误,例如“索引处没有对象:索引处的部分:”或“CoreData 无法完成错误...”。

他们都暗示,核心数据和多线程环境有问题。有没有人尝试将所有这三种工具连接起来一起工作?如果是这样,我错过了什么?您有适用于该架构的有效代码示例吗?

最佳答案

我建议使用:

[MagicalRecord saveWithBlock:(void(^)(NSManagedObjectContext *localContext))block];

它为您处理线程,因此您不必担心从后台上下文中将任何内容保存到父上下文中。

我强烈建议您阅读这篇博文(由 MagicalRecord Saul Mora 的创建者撰写):IMPORTING DATA MADE EASY .它是关于 MagicalRecord 工作原理的非常好的背景信息以及如何使用它的示例。

如果您正确设置了数据模型,您实际上可以让 MagicalRecord 为您完成所有映射,您所要做的就是在 saveWithBlock: block 中调用 importFromObject:而且您不必担心处理映射。我上面链接的文章详细介绍了如何正确执行此操作,但这需要一些练习。

关于ios - MagicalRecord + AFNetworking + NSFetchedResultsController,如何让它工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14559177/

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