2016-07-31 132 views
0

下午好Alamofire要求返回值,從雨燕2.2

我試圖創建一個簡單的函數來檢索使用與Alamofire外部API在雨燕2.2的一些信息,但是當我想返回值是總是空的。

我試圖關注本網站的其他一些質量檢查以及其他網站的更多質量保證,但是我無法從此功能返回值。

當我在Alamofire中打印我的變量(概述)時,它是正確的,但是當我嘗試返回它時,它總是空的。我需要在代碼中添加(或更改)以使其工作?

這裏是我的功能:

func getOverview(slug: String, clientID: String) -> String { 

    let movieURL: String = "https://api.trakt.tv/movies/"+slug+"?extended=full" 

    let headers = ["trakt-api-version":"2", "Content-Type": "application/json", "trakt-api-key": clientID] 

    var overview: String = "" 

    Alamofire.request(.GET, movieURL, headers: headers).responseJSON { response in 

     if response.result.isSuccess { 
      let movieInfo = JSON(data: response.data!) 
      overview = self.parseMovieOverview(movieInfo) 
      // THAT'S CORRECT 
      print(overview) 
     } else { 
      print(response.result.error) 
     } 
    } 

    // THAT'S EMPTY 
    return overview 
} 

這是我的電話:

// THAT'S ALWAYS EMPTY  
overview = getOverview(slug, clientID: clientID) 

與返回的值概述編輯:

func parseMovieInfo(json: SwiftyJSON.JSON, clientID: String) -> [Movie] { 

    for result in json.arrayValue { 

     let slug = result["ids"]["slug"].stringValue 
     let title = result["title"].stringValue 
     let year = result["year"].stringValue 

     // OVERVIEW 
     let overview = getOverview(slug, clientID: clientID) 

     // PICTURE 
     let picture = getPicture(slug, clientID: clientID) 

     let movie = Movie(slug: slug, title: title, year: year, overview: overview, picture: picture) 

     self.movies.append(movie) 
    } 

    return movies 
} 

大加讚賞,

問候

回答

1

看看網站上最常見的問題。你的問題是時機之一 - 如果你要在完成處理程序內部和外部打印兩個結果,你會看到該函數在完成處理程序執行之前就會很好地返回。它們是異步的,並且函數調用本身在結果返回之前已經消失了

+0

你能告訴我一些光@Feldur嗎?我仍然試圖使用完成處理程序來完成這項工作,但我無法達成解決方案。親切的問候。 –

+0

告訴我你對返回值做了什麼。 – Feldur

+0

我在第一篇文章中添加了代碼。我希望你能幫助我@Feldur,因爲我不知道如何繼續。我試圖在completionHandler中使用「dataTaskWithRequest」,但我必須提出3個請求,這很棘手(一個用於一般信息,一個用於概述,另一個用於圖片),因爲它們在不同的API調用中。 –