0

我正在从服务器获取用户对象。如果请求成功,我会得到:

{ user = {
        User = { id = 1; }
} }

失败时我得到:

{ user = false; }

我有一个在成功案例中运行良好的映射:[mappingProvider setMapping:userMapping forKeyPath:@"user.User"];

但是在失败的情况下,我得到了以下异常:'NSUnknownKeyException', reason: '[<__NSCFBoolean 0x1c58f78> valueForUndefinedKey:]: this class is not key value coding-compliant for the key User.'我还尝试将映射上的userMappingkeypath 设置为关系以从keypathUser生成一个,那里也没有乐趣。NSDictionaryuser

处理这个问题的正确方法是什么?似乎我需要两个不同的键路径映射user,并根据对象是否要解码为 NSBolean 来选择哪一个...

4

2 回答 2

0

我会建议RKDynamicObjectMapping。这两种口味中的任何一种都应该适合您:

- (void)setObjectMapping:(RKObjectMapping *)objectMapping whenValueOfKeyPath:(NSString *)keyPath isEqualTo:(id)value;

或者

+ (RKDynamicObjectMapping *)dynamicMappingUsingBlock:(void(^)(RKDynamicObjectMapping *dynamicMapping))block;
于 2012-08-06T06:33:22.100 回答
0

服务器可能(并且希望)返回一个 http 错误代码,例如 400 等。因此,Restkit 可能正在尝试使用错误映射来映射响应。

也许您需要做的是@Paul 所说的动态对象映射..但应用于错误映射。我在这里给你留下一个简单的错误映射,所以你知道我在说什么:

RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]];
[errorMapping mapKeyPath:@"msg" toAttribute:@"errorMessage"];
[[[RKObjectManager sharedManager] mappingProvider] setErrorMapping:errorMapping];
于 2012-08-24T16:24:25.980 回答