2016-11-27 73 views
0

我得到了Alamofire請求。我「給」縮短鏈接長度,它「給了我一個短暫的回報」。請求完美地工作,但是當將數據傳遞給Firebase請求時,它向我顯示它爲零。從GoogleShortenAPI到Firebase的數據

var _longUrl: String! 
var longUrl: String { 
    if _longUrl == nil { 
     _longUrl = "" 
    } 
    return _longUrl! 
} 

這是典型的getter - 二傳手

,下載功能看起來像:

func downloadData() { 
    var parameters = ["longUrl": "https://www.youtube.com/watch?v=XIQsQ2injLo&t=302s"] 
    Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON { response in 
     let result = response.result 
     if let dict = result.value as? Dictionary <String, AnyObject> { 
      if let name = dict["id"] as? String { 
       self._shortUrl = name 
      } 
     } 
    } 
} 

所以沒有什麼困難的。一切工作正常,直到我想傳遞數據到函數發送數據到數據庫。它顯示我在這兩個項目上都沒有這個功能。

func post() { 
    let item1 = _longUrl 
    let item2 = _shortUrl 
    let post : [String: Any] = ["longUrl" : item1, "shortUrl": item2] 
    let dataBaseRef = FIRDatabase.database().reference() 
    dataBaseRef.child("urls").childByAutoId().setValue(post) 
} 

回答

0

你在哪裏看到的項目爲零?你可以嘗試使post字典爲:

let post: Dictionary<String, AnyObject> = [ 
     "longUrl": item1 as String, 
     "shortUrl": item2 as String 
] 
+0

我知道你要非常具體,當你告訴火力地堡什麼樣的數據要發送到的數據的基礎,但這只是帶我零上_shortUrl和downloadData函數外的_longUrl無處不在。 – Magnifique

+0

嗯。你的代碼對我來說似乎很完美。正如我所看到的,你已經在函數之外聲明瞭'_shortUrl',並且在函數內部自行調用它。你確定'dict [「id」]'是通過'name'變量賦給'_shortUrl'嗎? – waseefakhtar

+0

當我在downloadData func中打印_shortUrl時,它顯示我正確的JSON數據。 – Magnifique

相關問題