【发布时间】:2012-01-02 10:56:25
【问题描述】:
我有一个类似 JSON 的结构
{
"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 中):
{
contacts = "";
name = myName;
id = 1;
...
}
【问题讨论】:
-
抛出的异常是什么?另外,您使用哪个 RestKit 版本?
-
@mja: 0.9.3版,例外是
[<__NSCFConstantString 0x3fe1bc> valueForUndefinedKey:]: this class is not key value coding-compliant for the key address. -
我在我的一个基于 RestKit 的项目中尝试了类似的案例,我没有任何例外。不过,我使用来自 git,master 分支的最新 RestKit。请尝试以下操作(以检查您是否遇到相同的异常):将关系映射添加到不存在的键,例如。 “contacts.whatever”(保持所有映射不变)并解析包含地址和电子邮件的 JSON。
-
@mja 感谢您的评论;请看我的编辑...我认为我们的方式很好:)
-
我建议你尝试最新的 git/master 分支。
标签: objective-c ios restkit