0

其中一个托管对象具有一个由 NSNumber 类型表示的属性“isMember”。当通过 RestKit 序列化到 Json 帖子正文时,它总是给出 0/1 而不是 YES/NO 或 true/false。当从 json 结果映射到对象时,RestKit 能够成功地将 YES/NO 转换为 NSNumber。强制将布尔属性序列化为 YES/NO 或 true/false 的方法是什么?

Serialize: 0 -> 0, 1 -> 1

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

2 回答 2

3

在NSNumber表示中,0相当于NO,1相当于YES;此外 BOOL 是整数兼容类型,通常是无符号字符。这里没有矛盾。

于 2012-07-08T07:10:25.343 回答
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;
}

更新

我发现这仅在您将正文作为普通文本/html 参数发送时才有效。当将 RKObjectManager 的serializationMIMEType 设置为RKMIMETypeJSON序列化对象将是 json 作为 NSData。在这种情况下,您仍然可以操作序列化对象,但您必须解析 json,更改它,然后再次对其进行序列化。

于 2012-10-02T23:19:44.290 回答