Objective c RestKit:如何定义可选(嵌套)关键路径
我有一个JSON结构,比如Objective c RestKit:如何定义可选(嵌套)关键路径,objective-c,ios,restkit,Objective C,Ios,Restkit,我有一个JSON结构,比如 { "objects":{ "person":[ { "id":"1", "name":"my name" "contacts":{ "address":{ "id":"1", "street":"mystreet", "co
{
"objects":{
"person":[
{
"id":"1",
"name":"my name"
"contacts":{
"address":{
"id":"1",
"street":"mystreet",
"country":"mycountry"
},
"email":{
"id":"1",
"emailAddress":"hello@hello.com"
}
},
},
...
我试着用下面的方法绘制它:
[personMapping mapKeyPath:@"contacts.address" toRelationship:@"address" withMapping:addressMapping];
只要存在联系人,此功能就可以正常工作。但如果没有地址/电子邮件,则不会发送此元素,这会导致RKMappingOperation#applyRelationshipMappings
:value=[self.sourceObject valueForKeyPath:relationshipMapping.sourceKeyPath]中出现异常
现在,我的解决方法是使用@try…@catch
,但我希望有更好的解决方案
非常感谢
编辑:如果根本没有发送联系人,则会发生异常;然后,JKDictionary看起来像这样(同样在RKMappingOperation#applyRelationshipMappings
中):
也许在实例化对象时应该正确初始化它们?也许一开始你所有的财产都是零;然后,当你继续填写属性;在提交(或映射或其他)之前,请检查属性值的数据完整性。引发的异常是什么?另外,您使用哪个RestKit版本?@mja:version 0.9.3,例外情况是
[valueForUndefinedKey:]:该类不符合密钥地址的键值编码。
我在一个基于RestKit的项目中尝试了类似的情况,我没有得到任何例外。不过,我使用的是git master branch的最新RestKit。请尝试以下操作(检查是否出现相同的异常):将关系映射添加到不存在的键,例如“contacts.where”(保持所有映射不变),并解析包含地址和电子邮件的JSON。@mja感谢您的评论;请看我的编辑。。。我认为我们走的很好:)我建议你试试最新的git/master分支。
{
contacts = "";
name = myName;
id = 1;
...
}