我对Swift 3中完成处理程序的语法感到困惑。
在下面的函数中,从Web服务调用解析xml
文件后,它应该返回一个变量(一个array [String:String]
)。
我的尝试如下,但显然是错误的。
enum HistoryKey {
case success([String:String])
case failure(String)
}
private func getHistoryKeys(searchterm: String, completion: @escaping () -> HistoryKey) {
let url = PubmedAPI.createEsearchURL(searchString: searchterm)
let request = URLRequest.init(url: url as URL)
let task = session.dataTask(with: request) { (data, response, error) in
if let theData = data{
let myParser = XMLParser.init(data: theData)
myParser.delegate = self
myParser.parse()
}
}
task.resume()
if keys.isEmpty {
return .failure("no historyKeyDictionary")
}else{
return .success(keys)
}
}// End of func
我希望按照以下方式使用此功能。
let result = self.getHistoryKeys(searchTerm)