我正在尝试将 Pending/Completed 值转换为 bool 值 True/False
代码如下:
RKValueTransformer *transformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class sourceClass, __unsafe_unretained Class destinationClass) {
return ([sourceClass isSubclassOfClass:[NSNumber class]]);
} transformationBlock:^BOOL(NSNumber *inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputClass, NSError *__autoreleasing *error) {
// validate the input
RKValueTransformerTestInputValueIsKindOfClass(inputValue, [NSNumber class], error);
if([inputValue isEqualToNumber:@(Completed)]) {
*outputValue = YES;
} else if([inputValue isEqualToNumber:@(Pending)]){
*outputValue = FALSE;
}
return YES;
}];
但是,我收到错误:ARC 不允许将“BOOL”(又名“bool”)隐式转换为“id”
当我尝试将 outputValue 设置为 YES 时...
这是怎么回事?
它应该匹配这个输出:
{
“IsCompleted”: true (nullable),
“Desc”: null (“new description” on edit)
}
最佳答案
transformationBlock
接受一个输入对象,需要输出一个不同的对象,但是BOOL是一个内在类型,不是对象类型,所以不能设置*output
到一个直接的 bool 值。
你可以将它设置为一个NSNumber
对象来包装 bool 值 -
*output=[NSNumber numberWithBool:YES];
或者使用速记
*output=@YES;
关于ios - ARC 不允许将 'BOOL'(又名 'bool')隐式转换为 'id',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31797152/