【问题标题】:How I can map NSDictionary to NSManagedObject without writing to CoreData?如何在不写入 CoreData 的情况下将 NSDictionary 映射到 NSManagedObject?
【发布时间】:2014-11-06 14:20:49
【问题描述】:

我使用的是MagicalRecord,但在使用时遇到了一点问题。

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

NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[查看 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

【问题讨论】:

    标签: json core-data nsdictionary nsmanagedobjectcontext magicalrecord


    【解决方案1】:

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

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

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

    你可以参考一个好的apple doc(Implementing Find-or-Create Efficiently 部分):

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

    一个技巧是只对您要更新的所有对象发出一个请求,然后一个请求将它们全部更新。它在内存使用方面更差,但在 I/O 方面更好,这应该会加快你的速度。

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

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 2012-10-22
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多