2016-11-27 12 views
0

Alamofireのリクエストがあります。私はshortenLink APIのlongUrlを "与え"、それは "私にshortUrlを返します"。リクエストは完璧に動作しますが、Firebaseのリクエストにデータを渡す場合は、それはゼロであることがわかります。GoogleShortenAPIからFirebaseへのデータ

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

典型的なゲッターだ - セッター

そして、ダウンロード機能は、次のようになります。

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 
      } 
     } 
    } 
} 

ので、ハードは何もありません。私はデータをデータベースに送る機能にデータを渡すまで、すべてうまく動作します。これは、両方の項目でこの関数でnilを示しています。

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

ここで、項目はnilとして正確に表示されますか。あなたはpost辞書を作ってみることができます:あなたはデータベースに送信しているが、これはちょうど私_shortUrlにnilを見せているデータの種類Firebaseを言っているとき、私はあなたが非常に具体的であることを知っている

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

と_longUrlは、downloadData関数の外部にあります。 – Magnifique

+0

Hmm。あなたのコードは私にとってはまったく問題ないようです。私はあなたが関数の外で '_shortUrl'を宣言し、関数内で自己によってそれを呼び出すことを見てきました。 'dict [" id "]'が 'name'変数を介して' _shortUrl'に割り当てられていますか? – waseefakhtar

+0

downloadData funcで_shortUrlを印刷すると、正しいJSONデータが表示されます。 – Magnifique

関連する問題