Внутреннее сопоставление RESTKIT завершается неудачно, если значение json == NULL - PullRequest
1 голос
/ 25 сентября 2011

Я использую RESTKIT для сопоставления свойств со стороны сервера со свойствами на стороне клиента.

Я сталкиваюсь с ошибкой [NSNull unsignedIntValue], когда RESTKIT пытается сопоставить значение NULL с серверак свойству NSUInteger на стороне клиента.

Например:

//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"];

Для приведенного выше сценария я получу ошибку [NSNull unsignedIntValue], если значение json равно "new_questions_count":null.

Как я могу выполнить проверку на стороне клиента и разрешить ее, не меняя реализацию на стороне сервера?

1 Ответ

0 голосов
/ 25 сентября 2011

Хотя вы еще не показали код, в котором фактически декодировали 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.
}
...