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