【问题标题】:RESTKit object BOOL property to true/false JSONRESTKit 对象 BOOL 属性为真/假 JSON
【发布时间】:2013-07-26 06:04:38
【问题描述】:

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

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

@property (nonatomic) BOOL exported;

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

有趣的是,当反过来,从 JSON truefalse 到 BOOL 属性时,RestKit 读取 JSON true/false 就好了,适当地设置属性。

【问题讨论】:

    标签: ios objective-c restkit


    【解决方案1】:

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

    @property (nonatomic) bool exported;

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

    【讨论】:

    • 值得一提的是,这似乎不再是 64 位版本的问题。
    【解决方案2】:
    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

    【讨论】:

    • 没关系,但我想从 NSObject BOOL 属性映射到 JSON 布尔格式,即 truefalse -- 因为 JSON 具有布尔类型。
    【解决方案3】:

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

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

    @property (nonatomic) NSNumber *exported;

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

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

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

    "exported" : true
    

    【讨论】:

      【解决方案4】:

      如果有人在 Swift 中使用 RestKit,并且遇到了一些问题,请不要忘记在属性中添加 dynamic 修饰符,并且 Bool 变量不能是可选的。因此使用以下内容:

      dynamic var exported: Bool = false
      

      查询问题:Bool Property Cannot be marked dynamic in swift

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-06
        • 1970-01-01
        相关资源
        最近更新 更多