我正在使用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。
如何在客户端进行检查并解决此问题,而无需更改服务器端的实现?
答案 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.
}