我正在将AFIncrementalStore集成到我的项目中,但我很难弄清楚如何让关系发挥作用。
假设我有两个模型:Document和Page。一个文档有很多页面(一个多页)。每个模型与另一个模型具有反比关系。
所以我能做到:
myDocument.pages
或
myPage.document
我正在尝试获取属于文档的所有页面。我有一个AFIncrementalStore子类和一个实现必要方法的AFHTTPClient子类。
我可以看到调用正确的REST URI(例如/ documents /:id / pages)。我还可以看到页面被下载并存储到sql数据库的pages表中。
问题是两者之间没有关系。当我查看数据库时,外键列为空。如果我执行myDocument.pages,它也不会返回任何内容。
获取新数据时是否必须手动链接这两个?我正在阅读AFIncrementalStore来源,但没有任何内容。
思想?
答案 0 :(得分:3)
好吧,经过几个小时的调试和逐行阅读AFIS,我得到了它的工作,但它需要对REST API进行一些更改。
最初,我的API返回类似以下内容(示例):
GET /documents/12/pages
Response:
{
title: "My Title",
body: "Some body text ..."
}
但为了使其与AFIS很好地协同工作,我必须在那里添加对Document的引用,如下所示:
Response:
{
title: "My Title",
body: "Some body text ...",
document:
{
id: "12"
}
}
只要在CoreData中正确设置了关系,AFIS就会遍历关系并自动找到关系“document”并在返回的对象中查找该键。如果您的服务器密钥与核心数据属性不匹配,则可以覆盖AFIncrementalStoreHTTPClient协议方法之一以指定正确的对象。
现在工作正常,如果出现问题我会报告。
希望能帮助其他人。