0

管理対象オブジェクトの 1 つには、NSNumber 型で表される 1 つの属性「isMember」があります。RestKit で Json 投稿本文にシリアライズすると、常に YES/NO または true/false の代わりに 0/1 が返されます。json の結果からオブジェクトにマッピングする場合、RestKit は YES/NO を NSNumber に正常に変換できます。boolean 属性を強制的に YES/NO または true/false にシリアル化する方法は何ですか?

Serialize: 0 -> 0, 1 -> 1

Deserialize : YES/true -> 1, NO/false -> 0
4

2 に答える 2

3

デリゲート メソッドのいずれかを使用して、値を手動で変更できます。

- (void)objectLoader:(RKObjectLoader *)objectLoader didSerializeSourceObject:(id)sourceObject toSerialization:(inout id<RKRequestSerializable> *)serialization
{
    NSMutableDictionary *params = ((NSDictionary*)*serialization).mutableCopy;
    NSNumber *value = [params objectForKey:@"myBoolean"];
    [params setObject:value.boolValue ? @"true" : @"false" forKey:@"myBoolean"];
    *serialization = params;
}

アップデート

これは、本文を通常の text/html パラメータとして送信する場合にのみ機能することがわかりました。RKObjectManagerのserializationMIMETypeRKMIMETypeJSONに設定すると、シリアル化オブジェクトは NSData としての json になります。その場合でもシリアル化オブジェクトを操作できますが、json を解析して変更し、再度シリアル化する必要があります。

于 2012-10-02T23:19:44.290 に答える
3

NSNumber 表現では、0 は NO に相当し、1 は YES に相当します。さらに、BOOL は整数互換型で、通常は unsigned char です。ここに矛盾はありません。

于 2012-07-08T07:10:25.343 に答える