2016-09-28 61 views
0

我現在正在製作帶有自動完成功能的UITextField,用戶在點擊一個或多個字母后將獲得地點名稱和郵政編碼列表。在Swift中,如何在閉包中設置函數的返回值?

我得到了一個Autocomplelt(https://github.com/cjcoax/Autocomplete),並有一個委託函數:

func autoCompleteItemsForSearchTerm(term: String) -> [AutocompletableOption]

我必須用term發送一個HTTP請求到服務器,並等待一個JSON響應爲return

對於網絡connenction,我用莫亞lib和喜歡它的方法: CredentialProvider.request(.Autocomplete(term, 10)) { (result) ->() in }

現在,我的問題是:如何讓我越來越從服務器的響應後返回值?

感謝

+1

完工塊 – Janmenjaya

+0

您可以使用調度組,調度組等待但這會阻止主線程並給用戶帶來不好的體驗。您需要重構庫以便完成列表可以異步交付或查找不同的庫或編寫自己的代碼 – Paulw11

+0

使用RxSwift可以是更好的方法[在您的請求中添加事件.onNext:get json&do your stuff ] https://github.com/ReactiveX/RxSwift – StrawHara

回答

0

宣告以完成塊的功能:

class func authenticateUser(userName:String?,password:String?,completionHandler: (response:NSDictionary?) -> (Void)) ->Void 
{ 
     completionHandler(response: nil(or)dict) 
} 

調用一個函數:

authenticateUser(emailId, password: password, completionHandler: { (response) in 
     print(response) 
}) 
相關問題