2017-06-22 45 views
0

我使用put方法,用於發送布爾值alamofire,但是當我嘗試打印我的請求返回它從bool值轉換爲一個int。Bool在URL編碼參數編碼爲0和1與Alamofire Swift3

但在我的數據庫中,我真的需要存儲一個布爾值。這裏是我的代碼

func sendNewData(key:String, index: Int, value: Bool, sectionName: String) -> Void { 
    let url:String = "\(self.API_URL_BASE)\(API_URL_SETTINGS)" 

    var parameters: Parameters 
    parameters = [ 
     sectionName: [ 
      key: value, 
     ] 
    ] 
    Alamofire.request(url, method: .put, parameters: parameters, headers: Api.headers).responseJSON 
    { response in 
     if (response.error == nil) 
     { 
      let json = JSON(response.result.value!) 
      if (json["status"].stringValue == "ok") 
      { 
       self.getSettings() 
      } 
     } 
     else 
     { 
      print(response.error) 
     } 
    } 
} 

func getSettings() -> Void { 
    let url:String = "\(self.API_URL_BASE)\(API_URL_SETTINGS)" 
    Alamofire.request(url, method: .get, headers: Api.headers).responseJSON 
     { response in 
      if (response.error == nil) 
      { 
       let json = JSON(response.result.value!) 
       print(json) 
      } 
      else 
      { 
       print(response.error as Any) 
      } 
    } 
} 

的getSettings方法返回我:

{ 「狀態」: 「OK」, 「數據」:{ 「雜項」:{ 「beInAnonymousPanel」:「 0" }} }

相反的:

{ 「狀態」: 「OK」, 「數據」:{ 「雜項」:{ 「beInAnonymousPanel」:真 } } }

我找到了一些其他的話題而且在swift3之前,他們沒有得到很好的解決方案。

編輯:我用swiftyjson

+0

大哥檢查你的web服務,這是返回布爾值0或1。如果正確的方法你想得到'true'或'false',那麼你應該從web服務中添加'true或False'作爲'beInAnonymousPanel'的值。 –

回答

1

你可以分析它,轉換INT爲bool並保存或使用它。 轉換,如:

let intVar = 1 
let boolVar = Bool(intVar as NSNumber) 

print(boolVar) // true 
+0

沒有這個解決方案不適合我,它仍然在我的數據庫中存儲一個int,我只能有bool。 –

+0

在存儲爲bool或int的數據庫中? 如果您將其存儲在覈心數據中,則它將顯示爲0或1,但在模型中,您可以將其作爲true或false –

+0

在數據庫中,我存儲Bool –

1

我終於找到了我答案,我忘了我的編碼參數:

Alamofire.request(url, method: .put, parameters: parameters, encoding: JSONEncoding.default, headers: Api.headers).responseJSON 
    { response in.. }