2017-02-14 46 views
0

我得到這個錯誤:斯威夫特:建立一個選擇時不能轉換類型的值<>預期參數類型<>

cannot convert value of type nsdictionary to expected argument type string

enter image description here
這裏是我的代碼:

let json:NSDictionary = try JSONSerialization.jsonObject(with: dataResponse, options: []) as! NSDictionary 
self.performSelector(onMainThread: Selector(updateUIwithJsonResponse), with: json, waitUntilDone: true) 

performSelector調用此函數:

func updateUIwithJsonResponse(json:NSDictionary) { 
print(json) 
} 

你們誰都知道我爲什麼會遇到這個錯誤?

+0

1.你爲什麼要使用'NSDictionary'迅捷的字典呢? 2.爲什麼你使用'performSelector'而不是'DispatchQueue'? – rmaddy

+0

@rmaddy,因爲我不需要隊列。你爲什麼認爲它會更好地使用DispatchQueue? – user2924482

+0

使用'DispatchQueue.main.async'更簡單更清晰。你可以簡單地在塊內寫入實際的代碼。不需要混淆選擇器,它可以處理任何數量和類型的參數。 – rmaddy

回答

1

你的方法需要一個參數,所以儘量

self.performSelector(onMainThread: #selector(updateUIwithJsonResponse(json:)), with: json, waitUntilDone: true)

+0

爲什麼不能在#selector(updateUIwithJsonResponse(json :))中刪除json:? – user2924482

相關問題