如何使用RestKit发送布尔值?

时间:2012-06-04 02:09:52

标签: ios json core-data restkit

我的RestKit App在发送它的Core Data对象时失败,因为生成的JSON对于布尔属性值而不是true或false有10。服务器不喜欢它。

转换发生在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值为真?

1 个答案:

答案 0 :(得分:1)

我正在开发一个基于Restkit的项目,我也在使用Core Data集成。 我也有布尔字段,没有这样的问题。

  • 对于我的NSManagedObject,我的属性被定义为NSNumber。
  • 在Core Data中,相应的属性被定义为Integer16(不记得为什么我没有选择布尔值,但这可能与我有同样的问题)
  • 要设置我的布尔值,我使用的是:

[myObject setValue:[NSNumber numberWithBool:value] forKey:@"booleanAttribute"];