如果json值== NULL,RESTKIT内部映射将失败

时间:2011-09-25 06:15:51

标签: objective-c ios null restkit

我正在使用RESTKIT将服务器端的属性映射到客户端的属性。

当RESTKIT尝试将NULL值从服务器映射到客户端的NSUInteger属性时,我遇到[NSNull unsignedIntValue]错误。

例如:

//User object property "new_questions_count" defined on client side with NSUInteger property
@interface User : NSObject <NSCoding>
{
    NSUInteger new_questions_count;
}

@property (nonatomic, assign) NSUInteger new_questions_count;

@end

//User Object Mapping - mapping "new_question_count" to server's json value
RKObjectMapping* userMapping = [RKObjectMapping mappingForClass:[User class]];
[userMapping mapAttributes:@"new_question_count",nil];
[provider setMapping:userMapping forKeyPath:@"user"];

对于上面的场景,如果json值为“new_questions_count”,我将点击[NSNull unsignedIntValue]错误:null。

如何在客户端进行检查并解决此问题,而无需更改服务器端的实现?

1 个答案:

答案 0 :(得分:0)

虽然您没有显示实际解码JSON的代码,但我假设您正在使用正确尊重NSNull类的第三方库。在这种情况下,您可以使用以下命令检查键@“x”的对象是否为空:

if ([[dictionary objectForKey:@"x"] isKindOfClass:[NSNull class]]) {
    // it is NULL
} else {
    // it is not NULL, but it still might
    // not be in the dictionary at all.
}