【问题标题】:The best library for mapping Core Data [closed]映射核心数据的最佳库 [关闭]
【发布时间】:2014-03-15 05:48:33
【问题描述】:

作为一名开发人员,我每天都在处理数据。我需要将原始数据处理到对象(NSManagedObject)的共同点。所以我使用 AFNetworking 从远程服务器获取数据,作为 AFNetworking 工作的结果,我有一个可以由 NSDictionary 表示的数据。因此,可能需要大量工作的主要事情是将这些原始数据转换为具体的数据模型。所以互联网上有很多图书馆可以为我们完成这项艰巨的工作:

MagicalRecordMagicalImport

Mantle

EasyMapping

所以作为一个新的映射我想知道哪个库最适合我的目的。也许你也可以推荐另一个。

【问题讨论】:

    标签: ios core-data magicalrecord github-mantle


    【解决方案1】:

    您提到的每个库都有不同的用途:

    MagicalRecord - 简化常见的 Core Data 操作(获取、插入、删除、设置堆栈等)。 它不处理将 JSON 或任何其他格式映射到 Core Data 模型。 感谢@casademora:MagicalRecord 可以使用here 描述的步骤处理带有自定义映射的导入。也就是说,MagicalRecord 是一个相当大的库,仅用于此功能。

    Mantle - 大大减少了 Objective-C 中模型对象的样板文件(NSCodingNSCopying-isEqual:/-hash 等的自动实现)。包括像 MTLJSONAdapterMTLManagedObjectAdapter 这样的适配器,用于在模型对象的表示之间进行转换。这听起来最适合您想要实现的目标。如果您在 MTLModel 子类上同时实现 MTLJSONSerializingMTLManagedObjectSerializing 协议,您将能够将来自 Web API(可能是 JSON 数据)的 NSDictionary 响应转换为 Core Data 模型对象。

    EasyMapping - 我自己没有使用过这个库,但它看起来提供了 Mantle 功能的一小部分,纯粹用于在各种模型表示之间进行转换,除了它使用映射模型 (@987654334 @) 而不是子类化基本模型类。使用这个库的缺点是它不像 Mantle 那样为你处理任何其他的 Objective-C 模型对象样板。

    在提到的 3 个库中,我认为 Mantle 可能最适合您所描述的内容。另一种选择是使用RestKit,它提供比任何这些库更紧密的 REST API/Core Data 集成,但使用和调试要困难得多。

    【讨论】:

    • 感谢您的详细回答。这种正确的理解是否像映射和导入一样的东西?
    • MagicalRecord 确实可以处理更复杂的情况,它只是假设您的外部数据和数据模型匹配 1:1,并且您可以定义异常。
    • @casademora 确定我已经更正了
    • @casademora 很抱歉!我又看了看,发现了这些常量:github.com/magicalpanda/MagicalRecord/blob/develop/…。您在哪里传递这些选项(以便我可以编辑和澄清我的帖子)?
    • @MatrosovAlexander 映射只是导入过程的一部分,它可能涉及价值转换等其他步骤。
    【解决方案2】:

    如果您需要紧密的核心数据集成,您应该查看 RestKit (http://restkit.org) 如果您不这样做 - 我建议使用 EasyMapping。对于几乎所有情况,它都非常简单且功能强大。也不需要从框架类中继承您的类(如 Mantle 中的 MTLModel)

    【讨论】:

    • 值得注意的是,如果您实现 MTLModel 协议,Mantle 2.0 可能不需要子类化 MTLModel。不过,这对于 Mantle 1.x 来说当然是一个公平的观点。
    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多