2

我正在将 AFIncrementalStore 集成到我的项目中,但我很难弄清楚如何让关系发挥作用。

假设我有两个模型:文档和页面。一个文档有很多页(一对多)。每个模型与另一个模型具有反比关系。

所以我可以这样做:

myDocument.pages

或者

myPage.document

我正在尝试获取属于文档的所有页面。我有一个 AFIncrementalStore 子类和一个 AFHTTPClient 子类,它们实现了必要的方法。

我可以看到调用了正确的 REST URI(例如 /documents/:id/pages)。我还可以看到页面被下载并存储到 sql 数据库中的 pages 表中。

问题是两者之间的关系没有建立。当我查看数据库时,外键列是空的。

此外,如果我执行 myDocument.pages 它不会返回任何内容。

获取新数据时是否必须手动链接这两者?我正在阅读 AFIncrementalStore 源代码,但没有任何突出之处。

想法?

4

1 回答 1

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 就会遍历关系并自动查找关系“文档”并在返回的对象中查找该键。如果您的服务器密钥与您的核心数据属性不匹配,那么您可以覆盖 AFIncrementalStoreHTTPClient 协议方法之一来指定正确的对象。

目前运行良好,如果出现问题我会报告。

希望能帮助别人。

于 2013-05-16T23:28:03.780 回答