请耐心等待,因为我刚刚开始学习 Cocoa。我已经阅读了一些有关核心数据的教程,现在我正在处理 RESTkit 以将其与 Rails 应用程序一起使用。我还阅读了 RESTkit 维基页面上的所有文档、解决方案配方(尤其是 iOS SDK:Advanced RestKit Development 非常有用)。
为了简单起见,我将在这个问题中使用数量非常有限的模型/关系。
假设我有以下模型:company, person, language 具有以下关系:
company many-to-many person
language 1-to-many person
并且 RAILS 和 iOS 应用程序同步。
在某个时间,一个新人被引入到与现有公司和现有语言相关的 Rails 应用程序中: 例如。史蒂夫·乔布斯 > 迪士尼,史蒂夫·乔布斯 > 英语 同时一个新的人加入了一个新的公司,一种新的语言 例如。 Anna Kourinikova > Nike, Anna Kourinikova > 俄语
现在如何设置同步解决方案?我可以要求所有新人的 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) 如果现有人员关联到第二家公司怎么办?
因为这似乎是一个非常真实的世界情况,我认为文档中没有任何(类似的)示例很奇怪(如果我能与您一起解决问题,我愿意写一个关于这个主题的教程帮助。)
最佳答案
让我尝试一次一个地回答您的问题:
- 是的,通过适当的映射设置,RestKit 可以从上述 JSON 创建新的公司和语言。
是的,您可以避免获取嵌套的公司和语言数据,取而代之的是 company_id 和 language_id 外键,这些外键可在映射时用于将新人连接到本地商店中的现有公司和/或语言。查看以下映射 API:
- (void)connectRelationship:(NSString*)relationshipName withObjectForPrimaryKeyAttribute:(NSString*)primaryKeyAttribute;
对于#3 和#4,您需要先巩固您的服务器 API 设计,然后才能具体回答这些问题。您建议您将在问题中使用嵌套的 JSON,但也提出了建议您可能不使用嵌套的 JSON 甚至可能将上述 JSON 分解为多个请求的问题。您在 #4 中描述的场景可以由 RestKit 处理,但具体如何真正取决于您对服务器进行的调用以及响应这些调用返回的有效负载。很高兴在这里提供更多帮助,但归根结底,我非常有信心 RestKit 可以处理您的用例,映射配置的细节在很大程度上取决于您最终确定服务器 API。
关于objective-c - 具有(复杂)关系和核心数据/RAILS 的 Restkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7399777/