其中一个托管对象有一个由NSNumber类型表示的属性“isMember”。当通过RestKit序列化到Json post body时,它总是给出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
答案 0 :(得分:3)
在NSNumber表示中,0等于NO,1等于YES;此外,BOOL是整数兼容类型,通常是unsigned char。这里没有矛盾。
答案 1 :(得分: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 的 serializationMIMEType 设置为 RKMIMETypeJSON 时,序列化对象将是json作为NSData。在这种情况下,您仍然可以操作序列化对象,但您必须解析json,更改它然后再次序列化。