3

请多多包涵,因为我只是在学习 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 创建和链接的公司和语言。我想对于现有公司来说这不是问题,但我的核心数据中还不存在新公司。

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

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

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

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

4

1 回答 1

4

让我尝试一次解决您的问题:

  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。

于 2011-09-13T13:09:32.907 回答