我的RestKit App在发送它的Core Data对象时失败,因为生成的JSON对于布尔属性值而不是true或false有1
或0
。服务器不喜欢它。
转换发生在JSONKit.m
第2723行,代码执行如下操作:
if (object == (id)kCFBooleanTrue) { /*... yield "true" */ }
else if (object == (id)kCFBooleanFalse) { /*... yield "false" */ }
/* else yield integer */
这里的比较失败了。我的核心数据对象显然将其真实值存储为[NSNumber numberWithInt:1]
而不是[NSNumberWithBool:YES]
(我很惊讶地发现,尽管调试器打印为1
,但它们会导致不同的对象)
请注意,我将该布尔属性设置为:
myManagedObject.boolFieldValue = myUISwitch.on;
其中boolFieldValue
是由MOgenerator定义的属性,其中setter为:
-(void) setBoolFieldValue:(BOOL)value_ {
[self setBoolField:[NSNumber numberWithBool:value_]];
}
有没有办法强制输出1值为真?
答案 0 :(得分:1)
我正在开发一个基于Restkit的项目,我也在使用Core Data集成。 我也有布尔字段,没有这样的问题。
[myObject setValue:[NSNumber numberWithBool:value] forKey:@"booleanAttribute"];