RestKit 对象映射与外键和服务

Posted

技术标签:

【中文标题】RestKit 对象映射与外键和服务【英文标题】:RestKit object mapping with foreign keys and services 【发布时间】:2013-09-30 14:45:45 【问题描述】:

我正在尝试为类似 rest 的服务设置一个 RestKit 对象映射,但不幸的是我无法控制。

该模型是带有产品列表的愿望清单。 WishList 和 Product 显然是多对多的关系。愿望清单和产品具有不同的属性,为简单起见,我们假设它们都只有名称。

我有单独的服务来获取愿望清单的详细信息、产品的详细信息以及它们之间的关系。

例如:

GET /api/wish_list/?id=1234

 
    "name"="My wish list",
    "id"=1234

GET /api/products


    products:[
    
        "name"="Product 1",
        "id"=1111
    ,
    
        "name"="Product 2",
        "id"=2222
    ,
    
        "name"="Product 3",
        "id"=3333
    ]

GET /api/wish_list_products/?wish_list_id=1234


    products:[
    
        "id"=1111
    ,
    
        "id"=2222
    

我创建了 Product 和 WishList 实体之间的核心数据关系,但我如何告诉 RestKit 它应该发出第二个请求以获取特定 WishList 的产品 ID 列表?

我想我应该使用 [RKRoute routeWithRelationshipName:objectClass:pathPattern:method:] 和/或 RKConnectionDescription 对象,但我真的无法从帮助中弄清楚他们如何帮助我。

【问题讨论】:

【参考方案1】:

RestKit 不会自动加载关系的数据,您需要告诉它何时这样做。如果您使用routeWithRelationshipName:objectClass:pathPattern:method: 添加路由,那么您可以使用getObjectsAtPathForRelationship:ofObject:parameters:success:failure: 发出请求。基本上,它将关系名称链接到请求以收集所需的详细信息。

【讨论】:

谢谢。出于某种原因,我认为 RestKit 会自动加载数据。我设法让getObjectsAtPathForRelationship:ofObject:parameters:success:failure: 工作,但在我看来,它只是获取对象而不创建与源对象的关系。我是否还必须手动创建关联? 它也应该填充关系,它有源对象和关系的名称。您是否检查了映射的(跟踪)日志以查看它是否表明有任何问题? 我仔细检查了跟踪日志,但没有发现任何可疑之处:RestKit 根本不会尝试创建这些关系。但是,我可以在获取子对象的操作的成功块中很容易地创建它们。

以上是关于RestKit 对象映射与外键和服务的主要内容,如果未能解决你的问题,请参考以下文章

向 RestKit 映射添加一对一外键连接的问题

RestKit 0.20:restkit 对象映射使属性映射加倍

RestKit 0.20.1 复合键和嵌套关系

两个端点结果之间的外键映射 RESTKIT Core Data

具有多个根对象的 Restkit 对象映射

RestKit:为外键关系创建存根