如何在不写入CoreData的情况下将NSDictionary映射到NSManagedObject?

时间:2014-11-06 14:20:50

标签: json core-data nsdictionary nsmanagedobjectcontext magicalrecord

我使用了MagicalRecord,并且在使用它时遇到了一些麻烦。

服务器向我发送一个JSON,我需要尽快将其映射到现有的NSManagedObject并将其提供给块。

NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[Review MR_importFromObject:dictionary inContext:localContext];
[localContext MR_saveOnlySelfAndWait];

之后:

[[CacheOperation sharedOperation]saveBestRateProductByDict:reviewDict];
Review *review = [Review MR_findFirstByAttribute:@"id" withValue:[reviewDict objectForKey:@"id"]];

但如果我有很多物品,那就需要很多时间。

如何在不写入CoreData的情况下将NSDictionary映射到NSManagedObject

1 个答案:

答案 0 :(得分:0)

我猜MR_importFromObject会检查对象是否存在插入或更新行为。

这对大多数情况来说都很棒。 (它是为90%http://www.cimgf.com/2012/05/29/importing-data-made-easy/而制作的) 但你是10%(我也是,如果它可以有任何支持)

此行为意味着有查找对象的请求以及更新它的请求。多个对象的数量,可能是巨大的。

您可以参考一个好的苹果文档(有效实现查找或创建的部分):

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html

一个技巧是只对要更新的所有对象发出一个请求,并且一个请求全部更新它们。它的内存使用情况更糟,但在I / O方面更好,这应该可以加快你的速度。

我们采用另一种方式使用TMCache并为经常更改的对象存储原始JSON。

希望得到这个帮助。