我正在使用 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]
,因此不会发生替换,并且异常仍然由 Mantle 引发。
捕获此 JSON null 情况并进行替换的正确方法是什么?