0

我一直在努力寻找一个解决方案和一个很好的教程来教授 Restkit 的对象映射功能。但是,来自 GITHUB repo 的教程非常不清楚。

这是我收到的对http://baseURL.com/contacts/进行 GET 调用的 JSON

请注意,与其他教程相比,我的 JSON 没有像“ACContact”这样的根密钥路径。

[{
 "status":"ACTIVE",
 "fax":"555-1212",
"addresses":[
  {
     "line1":"6 Main Street",
     "line2":"",
     "city":"Acton"
  },
  {
     ...
  }
....(other stuff)...
}
...more similar JSONs for the other contacts...
]

我仍然无法弄清楚如何映射子对象地址数组,因此我只是尝试映射该类的其他常规属性:

RKObjectManager *manager = [RKObjectManager objectManagerWithBaseURL: some_URL] ;

[[manager client] setValue:@"true" forHTTPHeaderField:@"SSLClientCipher"] ;
[[manager client] setValue:@"accept" forHTTPHeaderField:@"application/json"] ;

RKObjectMapping * contactMap = [RKObjectMapping mappingForClass:[ACContact class]] ;
[contactMap mapKeyPath:@"status" toAttribute:@"status"] ;
[contactMap mapKeyPath:@"fax" toAttribute:@"fax"] ;

[[manager mappingProvider] addObjectMapping:contactMap] ;

[manager loadObjectsAtResourcePath:@"/contacts" delegate:self] ;

这是我后来收到的错误:

restkit.object_mapping:RKObjectMapper.m:81 添加映射错误:找不到 keyPath 的对象映射:''

restkit.network:RKObjectLoader.m:222 在映射过程中遇到错误:找不到 keyPath 的对象映射:''

1)谁能告诉我这里出了什么问题?请注意,与其他教程相比,我的 JSON 没有像“ACContact”这样的根密钥路径。

对于 JSON 中的状态和传真等简单属性,是否有将值映射到我的联系人类属性的约定。

2)此外,我知道我可以使用关系映射来映射子对象地址,但是当我声明一个 NSMutableArray 来存储联系人内的地址列表时我该怎么做。

3)如果一切正常,如何在解析多个联系人的整个 JSON 时创建联系人列表?

感谢您的时间。布赖恩

4

1 回答 1

0

为了映射到没有 rootkeypath 的 JSON,我们设置使用:

[self.manager.mappingProvider setObjectMapping:self.contactMap forResourcePathPattern:@"/contacts"] ;

但是,这会造成您无法进行 POST 的问题,因为没有 RootKeyPath 就无法为对象创建序列化映射。

于 2012-08-12T18:04:54.220 回答