7

我有一些对象作为 JSON 发送到服务器,在请求正文中,用于 POST 请求。我的问题与布尔属性有关。

假设我在以 JSON 形式发送的对象中有此属性:

@property (nonatomic) BOOL exported;

默认情况下,RestKit以 JSON 格式10JSON 格式发送布尔值。如何设置 RestKit 以使所有 BOOL 都以trueor形式发送false(这是 JSON 布尔类型)。

有趣的是,当从 JSONtruefalse到 BOOL 属性时,RestKittrue/false可以很好地读取 JSON,并适当地设置属性。

4

4 回答 4

2

或者; 您可以将其设为 bool 而不是 BOOL,restkit 会正确解析它。

@property (nonatomic) bool exported;

它在读取中正确处理它的原因是 bool 本质上只是 1 或 0 ......所以 Restkit 足够聪明,可以将其转换为 BOOL。

于 2014-03-05T15:44:24.883 回答
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"

来源:见此表

于 2013-07-26T06:28:27.123 回答
1

这个问题源于 SQLite 没有布尔数据类型。因此,如果我的核心数据模式中有一个布尔值,它最终仍会作为整数存储在 SQLite 中(int 值为 1 或 0)。所以这就是为什么我看到10通过 RestKit 输出 JSON 时看到的原因。

为了纠正这个问题,我将我的属性从原来的问题更改BOOLNSNumber

@property (nonatomic) NSNumber *exported;

每当我分配给这个属性时,我都需要用一个NSNumber布尔值来设置它。

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

生成的 JSON 现在是正确的,因为我将 NSNumber 设置为boolValue

"exported" : true
于 2013-07-29T02:08:46.023 回答
0

如果有人将 RestKit 与 Swift 一起使用,并且像我一样遇到了一些问题,请不要忘记为dynamic属性添加修饰符,并且该Bool变量不能是可选的。因此使用以下:

dynamic var exported: Bool = false

检查问题:布尔属性不能在swift中标记为动态

于 2017-06-01T13:48:37.847 回答