2

我的 RestKit 应用程序在发送它的核心数据对象时失败,因为生成的 JSON 具有10用于布尔属性值,而不是 true 或 false。服务员不喜欢。

转换发生在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;

boolFieldValueMOgenerator 定义的属性在哪里,setter 是:

-(void) setBoolFieldValue:(BOOL)value_ {
  [self setBoolField:[NSNumber numberWithBool:value_]];
}

有没有办法强制 1 值的输出为真?

4

1 回答 1

1

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

  • 对于我的 NSManagedObject,我的属性定义为 NSNumber。
  • 在 Core Data 中,相应的属性被定义为 Integer16 (不记得为什么我没有选择 Boolean,但那可能是我遇到了和你一样的问题)
  • 为了设置我的布尔值,我使用了类似的东西:

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

于 2012-06-04T02:49:16.423 回答