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 0.20:restkit 对象映射使属性映射加倍