Я возвращаю ноль, почему мой запрос на получение / поиск Google выдает ошибку - PullRequest
0 голосов
/ 28 апреля 2019

Может быть, моя поисковая система не так или может быть проблема? Попытался изменить мой ключ API. Также установили точку останова, чтобы увидеть, что мое значение nil происходит из-за ошибки в "let session = ..". Больше не имею понятия, что делать.

    googleSearch(term: "George Bush") { results in
        print(results)  }

}

func googleSearch (термин: String, обратный вызов: @escaping ([(title: String, url: String)]?) -> Void) { let urlString = String (формат: "https://cse.google.com/cse?cx=016628067786358079133:2gm9usqzouc", term, Constants.searchEngineId, Constants.apiKey) let encodedUrl = urlString.addingPercentEncoding (withAllowedCharacters: .urlQueryAllowed)

guard let url = URL(string: encodedUrl ?? urlString) else {
    print("invalid url \(urlString)")
    return
}

let request = NSMutableURLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10)
request.httpMethod = "GET"
request.setValue(Constants.bundleId, forHTTPHeaderField: "X-Ios-Bundle-Identifier")

let session = URLSession.shared
let datatask = session.dataTask(with: request as URLRequest) { (data, response, error) in
    guard
        error == nil,
        let data = data,
        let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String : Any]
        else {

            callback(nil)
            return
    }

    guard let items = json?["items"] as? [[String : Any]], items.count > 0 else {
        print("no results")
        return
    }

    callback(items.map { ($0["title"] as! String, $0["formattedUrl"] as! String) })
}


datatask.resume()
        }
}
...