Я слежу за этой публикацией Swift (опубликованной Apple в сентябре 2016 г.).
Сообщение реализует следующее расширение, как показано ниже:
extension Restaurant {
private let urlComponents: URLComponents // base URL components of the web service
private let session: URLSession // shared session for interacting with the web service
static func restaurants(matching query: String, completion: ([Restaurant]) -> Void) {
var searchURLComponents = urlComponents
searchURLComponents.path = "/search"
searchURLComponents.queryItems = [URLQueryItem(name: "q", value: query)]
let searchURL = searchURLComponents.url!
session.dataTask(url: searchURL, completion: { (_, _, data, _)
var restaurants: [Restaurant] = []
if let data = data,
let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
for case let result in json["results"] {
if let restaurant = Restaurant(json: result) {
restaurants.append(restaurant)
}
}
}
completion(restaurants)
}).resume()
}
}
Когда я пытаюсь воссоздать это в своем собственном проекте, я получаю следующее сообщение:
Невозможно вызвать «dataTask» со списком аргументов типа «(с: String, completeHandler: () -> ())»
Почему есть несоответствие между сообщением и тем, что мне говорит XCode 8.1? Они оба были выпущены в одно и то же время.
Я использую Swift 3.0