昨天我更新了新的Mac OS X Sierra和XCode 8,這迫使我更新到Swift 3.0語法。在我的應用我有類似下面的許多功能:Swift3的許多問題:無法理解完成處理程序的新語法
fileprivate func requestFisheFieldWithHandler(_ url:String, completionHandler: @escaping (_ success: NSDictionary?, _ error: NSError?) -> Void) {
let configuration = URLSessionConfiguration.default
let url: URL = URL(string: url)!
let urlRequest: URLRequest = URLRequest(url: url)
let session = URLSession(configuration: configuration)
let task = session.dataTask(with: urlRequest, completionHandler: { (data: Foundation.Data?, response: URLResponse?, error: NSError?) -> Void in
if (error != nil) {
//print(error?.code)
//print(error)
completionHandler(success: nil, error: error)
}
else {
do {
let responseJSON = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions()) as! [String: String]
completionHandler(success: responseJSON, error:nil)
}
catch let error as NSError {
completionHandler(success: nil, error:error)
}
}
} as! (Data?, URLResponse?, Error?) -> Void)
task.resume()
}
,我得到這個錯誤:
"Cannot convert value of type '(Data?, URLResponse?, Error?) -> Void' to expected argument type '(Data?, URLResponse?, Error?) -> Void'"
此外,我還使用了許多關聯數組從下載的JSON文件中收集數據,如以下:
for comune in response! {
self.comuni.append(comune["nome"] as! String)
self.comuniWithID[comune["nome"] as! String] = Int(comune["idcomune"] as! String)
}
DispatchQueue.main.async {
self.myPicker.reloadComponent(1)
}
和其他錯誤我得到的是:
"Type 'NSFastEnumerationIterator.Element' (aka 'Any') has no subscript members"
請有人幫我糾正它們嗎?因爲我不明白他們的意思,我的應用程序將被下一個9月30日公佈的...
我發現Swift3很難拿起...感謝那些推動社會:) –