2016-11-27 6 views
0

Alamofire가 요청했습니다. shortenLink api longUrl을 "제공"하면 shortUrl을 돌려줍니다. 요청은 완벽하게 작동하지만, Firebase 요청에 데이터를 전달할 때는 그것이 제로라는 것을 보여줍니다. GoogleShortenAPI에서 Firebase에 이르는 데이터

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

그래서 열심히 아무것도 : - 전형적인 게터의

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

처럼 세터

그리고 다운로드 기능 보인다. 데이터를 데이터베이스로 보내는 기능에 데이터를 전달할 때까지 모든 것이 잘 작동합니다. 두 항목 모두이 함수에서 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으로 사전 제작 시도해 볼 수도 있습니다 : 나는 당신이 당신이 데이터베이스에 전송되는 데이터의 종류 중포 기지를 이야기 할 때 매우 구체적으로 알고

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

, 그러나 이것은 단지 _shortUrl에 전무 나를 보여주는 및 _longUrl downloadData 함수 외부의 모든 곳. – Magnifique

+0

흠. 귀하의 코드는 나에게 완벽하게 잘 보인다. 내가 보았 듯이 함수 밖에서'_shortUrl'을 선언하고 함수 내부에서 자체적으로 호출했습니다. 'dict [ "id"]'가'name' 변수를 통해'_shortUrl'에 할당되어 있습니까? – waseefakhtar

+0

downloadData func에서 _shortUrl을 인쇄하면 정확한 JSON 데이터가 표시됩니다. – Magnifique

관련 문제