Я использую Mantle для разбора некоторого JSON, который обычно выглядит следующим образом:
"fields": {
"foobar": 41
}
Однако иногда значение foobar равно null:
"fields": {
"foobar": null
}
Это приводит к тому, что MTLValidateAndSetValue
генерирует исключение, пытаясь установить значение nil с помощью кодирования по значению ключа.
То, что я хотел бы сделать, это обнаружить наличие этого нулевого значения и заменить его на -1.
Я попытался переопределить foobarJSONTransformer
в моем подклассе MTLModel
следующим образом:
+ (NSValueTransformer *)foobarJSONTransformer {
return [MTLValueTransformer transformerWithBlock:^id(id inObj) {
if (inObj == [NSNull null]) {
return [NSNumber numberWithInteger: -1];
} else {
return inObj;
}
}];
... и я вижу, что этот код вызывается, но inObj никогда не равен [NSNull null]
, поэтому подстановка не выполняется, и исключение все еще выбрано мантией.
Каков правильный способ поймать этот случай JSON null и сделать замену?