2013-07-26 14 views
7

リクエスト本体にPOSTリクエストとしてサーバーに送信するオブジェクトがいくつかあります。私の質問はブール値のプロパティに関連しています。RESTKitオブジェクトBOOLプロパティをtrue/falseに設定します。JSON

は私がJSONとして送信していたオブジェクトにこのプロパティを持っていると言う:デフォルトでは

@property (nonatomic) BOOL exported;

、RestKitは、JSONのいずれかで1または0としてブール値を送信します。すべてのBOOLがtrueまたはfalse(JSONブール型)として送信されるように、RestKitを設定するにはどうすればよいですか。

JSON trueまたはfalseからBOOLプロパティに変わったとき、RestKitはJSON true/falseを読み込み、適切にプロパティを設定します。

答えて

1

この問題は、SQLiteのは、ブールデータ型を持っていないという事実から生じます。だから私は私のコアデータスキーマでブール値を持っている場合、それはまだSQLite(int値1または0)で整数として格納されて終了します。そのため、RestKit経由でJSONを出力するときに1または0のいずれかが表示されます。これを修正するには

は、私がBOOLからNSNumberに私の元の質問から私の財産を変更:

@property (nonatomic) NSNumber *exported;

私はNSNumberブール値でそれを設定する必要があり、このプロパティに割り当てるたび。私はboolValueとのNSNumberを設定していますので、JSONを生成

target.exported = [NSNumber numberWithBool:[self.exported boolValue]]; 

は、正しくなりました。また

"exported" : true 
1
Source type :NSCFBoolean 
Destination type : NSString 
Discussion: Boolean literals true and false parsed from JSON are mapped to NSString properties as @"true" and @"false" 

出典:See This table

+1

罰金だが、私はちょうど 'true'をもしくは' false'のあるJSONブール形式にNSObjectのBOOLプロパティからマッピングしたいと思います - ので、 JSONにはブール型があります。 – dbarros

2

。あなたはBOOLの代わりにそれをboolにすることができ、restkitはそれを適切に解析します。

@property (nonatomic) bool exported;

それは、読み取りにそれを適切に処理する理由は、ブールのはとてもRestkitがBOOLに変換するのに十分なスマートです...本質的にちょうど1または0であるということです。

+0

これは、もはや64ビットのビルドでは問題にはならないと言えるでしょう。 – ender44

0

誰かがSwiftでRestKitを使用していて、問題が発生した場合は、dynamic修飾子をプロパティに追加することを忘れないでください。Bool変数はオプションではありません。

dynamic var exported: Bool = false 

チェック質問:そのため、次の使用Bool Property Cannot be marked dynamic in swift

関連する問題