菜鸟教程小白 发表于 2022-12-11 19:23:08

ios - 在 Swift 3.0 中使用 SwiftyJSONModel 接收空值


                                            <p><p>成功调用网络服务后,我得到以下 json</p>

<pre><code>&#34;balance_details&#34;:{
         &#34;raw_balance&#34;:&#34;13157.70&#34;,
         &#34;raw_credit_adeded&#34;:&#34;4035000.00&#34;,
         &#34;raw_credit_deducted&#34;:&#34;0.00&#34;,
         &#34;raw_tot_paid_amount&#34;:6000,
         &#34;tot_paid_amount&#34;:&#34;Rs.6000.00&#34;,
         &#34;tot_paid_invoices&#34;:2,
         &#34;balance&#34;:&#34;13157.7&#34;,
         &#34;current_balance&#34;:&#34;Rs.13157.70&#34;,
         &#34;credit_added&#34;:&#34;Rs.4035000.00&#34;,
         &#34;credit_deducted&#34;:&#34;Rs.0.00&#34;,
         &#34;last_recharge_amt&#34;:null,
         &#34;raw_amount&#34;:null,
         &#34;last_recharge_date&#34;:&#34;&#34;
      }
</code></pre>

<p>对于这个网络电话,我使用的是 Alamofire。为了将此 JSON 映射到 SWIFT OBJECT,我使用了 SwiftyJSONModel 库。但我无法设置将空值存储到 JSON 对象的类型。</p>

<pre><code>class BalanceDetails: JSONObjectInitializable {

    // FIXME: - properties
    var rawBalance: String
    var rawCreditAdeded: String
    var rawCreditDeducted: String
    var rawTotalPaidAmount: Int
    var totalPaidAmount: String
    var totalPaidInvoices: Int
    var balance: String
    var currentBalance: String
    var creditAdded: String
    var creditDeducted: String
    //    var lastRechargeAmount: NSObject
    //    var rawAmount: NSObject
    var lastRechargeDate: String

    // FIXME: - json properties
    enum PropertyKey: String {
      case raw_balance
      case raw_credit_adeded
      case raw_credit_deducted
      case raw_tot_paid_amount
      case tot_paid_amount
      case tot_paid_invoices
      case balance
      case current_balance
      case credit_added
      case credit_deducted
      //      case last_recharge_amt
      //      case raw_amount
      case last_recharge_date
    }

    // FIXME: - initializer
    required init(object: JSONObject&lt;PropertyKey&gt;) throws {
      rawBalance = try object.value(for: .raw_credit_adeded)
      rawCreditAdeded = try object.value(for: .raw_credit_adeded)
      rawCreditDeducted = try object.value(for: .raw_credit_deducted)
      rawTotalPaidAmount = try object.value(for: .raw_tot_paid_amount)
      totalPaidAmount = try object.value(for: .tot_paid_amount)
      totalPaidInvoices = try object.value(for: .tot_paid_invoices)
      balance = try object.value(for: .balance)
      currentBalance = try object.value(for: .current_balance)
      creditAdded = try object.value(for: .credit_added)
      creditDeducted = try object.value(for: .credit_deducted)
      //      lastRechargeAmount = try object.value(for: .last_recharge_amt)
      //      rawAmount = try object.value(for: .raw_amount)
      lastRechargeDate = try object.value(for: .last_recharge_date)
    }
}
</code></pre>

<p>当我从上面的代码中取消注释注释行时,xcode 给我一个错误,告诉我“没有'值'候选产生预期的上下文结果类型'NSObject'”。所以我的问题是如何设置该 JSON 值的类型,以便它与类字段一起存储。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我无法评论,所以我在这里回答你:</p>

<p>想可能是因为那些键的值是空的,所以我会试试这个:</p>

<pre><code>   lastRechargeAmount = try? object.value(for: .last_recharge_amt) as? String
   rawAmount = try? object.value(for: .raw_amount) as? String
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Swift 3.0 中使用 SwiftyJSONModel 接收空值,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43117381/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43117381/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Swift 3.0 中使用 SwiftyJSONModel 接收空值