Restkit 0.10.1使用RKObjectManager进行对象映射

时间:2012-08-03 19:49:57

标签: objective-c json ios5 mapping restkit

我一直在努力寻找一个解决方案和一个很好的教程来教授Restkit的Object Mapping功能。但是,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中的状态和传真等简单属性,是否存在将值映射到Contact类的属性的约定。

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

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

感谢您的时间。 布赖恩

1 个答案:

答案 0 :(得分:0)

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

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

然而,这会造成一个问题,即你无法进行POST,因为没有wat来为没有RootKeyPath的对象创建序列化映射。