【问题标题】:Restkit with (complex) relationships and Core Data / RAILS具有(复杂)关系和核心数据/铁路的 Restkit
【发布时间】:2011-11-16 00:27:51
【问题描述】:

请多多包涵,因为我只是在学习 Cocoa。我已经阅读了一些有关 Core Data 的教程,现在我正在处理 RESTkit 以将其与 Rails 应用程序一起使用。我还阅读了 RESTkit wiki 页面上的所有文档、解决方案配方(尤其是 iOS SDK:Advanced RestKit Development 非常有用)。

为了简单起见,我将在这个问题中使用数量非常有限的模型/关系。

假设我有以下模型:公司、人、语言具有以下关系:

company many-to-many person
language 1-to-many person

并且 RAILS 和 iOS 应用程序是同步的。

在某个时间,一个新人被引入到与现有公司和现有语言相关的 Rails 应用程序中: 例如。史蒂夫·乔布斯 > 迪士尼、史蒂夫·乔布斯 > 英语 同时,新公司加入了一个新人,并使用了一种新语言 例如。 Anna Kourinikova > Nike, Anna Kournikova > 俄罗斯人

现在如何设置同步解决方案?我可以要求所有新人的 JSON 转储:

[{"person": {
    "id": 123,
    "name": "Steve Jobs",
    "language": {
        "id": 1,
        "name": "English"
    },
    "company": {
        "id": 1,
        "name": "Disney"
    }
  }},
  {"person": {
    "id": 124,
    "name": "Anna Kournikova",
    "language": {
        "id": 22,
        "name": "Russian"
    },
    "company": {
        "id": 47,
        "name": "Nike"
    }
  }}]

现在我的问题:

1) RESTkit 可以(如果可以,如何?)RESTkit 创建和链接 公司和语言。我想对于现有公司来说这不是问题,但我的核心数据中还不存在新公司。

2) 有没有办法避免包含所有公司和语言数据的需要,因为在现实世界的应用程序中,如果将人员添加到现有公司,这将产生巨大的数据开销,而这些开销已经存在于 iOS 设备上

3) 可能是首先获取所有新语言、所有新公司然后获取所有新人的方法,只有与他们相关的语言/公司的 id 是一种更好的方法(节省带宽)但是我不是手动做很多 RESTkit 可以自动做的事情吗?

4) 如果现有人员与第二家公司有关联怎么办?

由于这似乎是一个非常真实的世界情况,我认为文档中没有任何(类似的)示例很奇怪(如果我能与您一起解决问题,我愿意写一个关于这个主题的教程帮助。)

【问题讨论】:

    标签: objective-c ios cocoa-touch core-data restkit


    【解决方案1】:

    让我一次一个地解决你的问题:

    1. 是的,通过正确的映射设置,RestKit 可以从上述 JSON 创建新的公司和语言。
    2. 是的,您可以避免获取嵌套的公司和语言数据以支持 company_id 和 language_id 外键,这些外键可在映射时用于将新人员连接到本地商店中的现有公司和/或语言。查看以下映射 API:

      • (void)connectRelationship:(NSString*)relationshipName withObjectForPrimaryKeyAttribute:(NSString*)primaryKeyAttribute;

    对于 #3 和 #4,您将需要巩固您的服务器 API 设计,然后才能具体回答这些问题。您建议您将在问题中使用嵌套 JSON,但也提出了一些问题,建议您可能不使用嵌套 JSON,甚至可能将上述 JSON 分解为多个请求。您在 #4 中描述的场景可以由 RestKit 处理,但具体如何真正取决于您对服务器发出的调用以及响应这些调用返回的有效负载。很高兴在这里提供更多帮助,但归根结底,我非常有信心 RestKit 可以处理您的用例,您的映射配置的细节很大程度上取决于您最终确定服务器 API。

    【讨论】:

    • 非常感谢杰夫。如果我理解正确:选项 1)很容易以更高的带宽成本实现,选项 2)通过分解 JSON,并使用 3)中描述的方法将减少带宽,但我必须使用手动粘合所有内容映射 API connectRelationship
    猜你喜欢
    • 2015-05-27
    • 2011-03-30
    • 1970-01-01
    • 2012-02-20
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多