2017-08-30 158 views
0

對不起,如果以前有人問過這個問題,我真的找不到任何甚至不是simillar的東西!我很抱歉,如果這個問題是愚蠢的,我是一個iOS開發人員,我有點在Android丟失...完成處理程序Android Kotlin

因此,我使用燃料庫(https://github.com/kittinunf/Fuel)從一個GET JSON數據API ...在Swift中,有一些稱爲完成處理程序的東西,只要函數完成,它就會返回並立即在其中運行代碼。這是它在斯威夫特的例子:

func hardProcessingWithString(input: String, completion: (result: String) -> Void) { 
    ... 
    completion("we finished!") 
} 

我需要的是做這項功能之後,我在科特林類似的東西。

fun recomendationsData() { 

    Fuel.get("https://rss.itunes.apple.com/api/v1/us/apple-music/hot-tracks/10/explicit.json").response { request, response, result -> 
        println(request) 
        println(response) 
        val (bytes, error) = result 
        if (bytes != null) { 
         val str = String(bytes) 
         val obj = JSONObject(str) 
         val resultsP = obj.getJSONObject("feed") 
         val results = resultsP.getJSONArray("results") 

         for (i in 0..(results.length() - 1)) { 
          val o = results.getJSONObject(i) 
          trackName1.add(o.getString("name")) 
          trackArtist1.add(o.getString("artistName")) 
          trackImage1.add(o.getString("artworkUrl100")) 
         } 


        } 
       } 
} 

從來就瞭解一些所謂的「回調」,但我真的鴕鳥政策明白它是如何工作的,也不知道怎樣去實現它(該任務必須異步完成)。

非常感謝你!

問候

回答

0

在這種情況下,語法類似於快捷:

fun recommendationsData(callback: (String) -> Unit) { 

然後在你的功能你有一個功能叫做callback,您可以用調用的結果(改變String,無論你」重新回來)。

然後改變從recommendationsData()你的函數調用要麼recommendationsData(doSomething)

recommendationsData { 
    doSomethingWith(it) // or you can get named argument 
    // do some more stuff 
} 
+0

哇!非常感謝!!!完美無瑕地工作!再次感謝你 –