2

1生成された JSON に trueまたは0false の代わりにブール値の属性値があるため、RestKit アプリが Core Data オブジェクトを送信すると失敗します。サーバーはそれが好きではありません。

変換はJSONKit.m2723 行目で行われ、コードは次のようになります。

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;

MOgeneratorboolFieldValueによって定義されたプロパティで、setter は次のとおりです。

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

1 値の出力を強制的に true にする方法はありますか?

4

1 に答える 1

1

私はRestkitベースのプロジェクトに取り組んでおり、Core Data統合も使用しています。私もブールフィールドを持っていますが、そのような問題はありません。

  • 私の NSManagedObject では、私のプロパティは NSNumber として定義されています。
  • Core Data では、対応する属性は Integer16 として定義されています (ブール値を選択しなかった理由を思い出せませんが、あなたと同じ問題があった可能性があります)。
  • ブール値を設定するには、次のようなものを使用しています:

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

于 2012-06-04T02:49:16.423 に答える