gpt4 book ai didi

ios - 如何使用 Google API 从互联网获取图像并将第一个结果插入 UIImageView 中

转载 作者:行者123 更新时间:2023-11-30 11:21:17 24 4
gpt4 key购买 nike

我有一个包含产品的 UITableView,每个产品都有一个 UIImageView,应该使用 google API 从 google 填充。因此,如果我的产品名称是“iPhone X”,那么我的 UIImageView 应该填充来自 google 的第一个图像结果,该图像将是带有 iPhone X 的图像。有时会为我提供第一个产品的图像,并且 UITableView 中的所有产品都将具有相同的图像,但 90% 的时间为我提供默认图像,即带有狗的图像。

这是我的代码:

    class ProductsViewController: UIViewController{

var query: String?
var googlePhotosArray = [Item]()
var productsArray = [Product]()



override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

fetchPhotosForProductsFromGoogle()
}


// Download photos from Google for products avatar
func fetchPhotosForProductsFromGoogle(){

for eachProduct in productsArray{

let productNameWithSpaces = eachProduct.name!
query = productNameWithSpaces.replacingOccurrences(of: " ", with: "_", options: .literal, range: nil)
}
guard let requestURL = URL(string: URLGoogle.googleAPIUrl + "\(query ?? "ChihuahuaExtreme")" + URLGoogle.googleSearchPhotosOnly + URLGoogle.googleSearchEngineID + URLGoogle.googleAPIKey)
else { fatalError(Constants.urlNotFound) }
URLSession.shared.dataTask(with: requestURL) { (data, response, error) in

guard error == nil else {
DispatchQueue.main.async { SCLAlertView().showError(Constants.error, subTitle: Constants.errorURLSesion) }
return
}
do {
let googlePhotosList = try JSONDecoder().decode(GoogleSearchModel.self, from: data!)

self.googlePhotosArray = self.googlePhotosArray + googlePhotosList.items
} catch { }
DispatchQueue.main.async {

self.productsTableView.reloadData()
}
}.resume()
}

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = productsTableView.dequeueReusableCell(withIdentifier: Constants.identifierProductCell, for: indexPath) as! ProductTableViewCell
cell.delegate = self

cell.productTitleLabel.text = productsArray[indexPath.row].name!
cell.productDescriptionLabel.text = productsArray[indexPath.row].prodDescription!
cell.productPriceLabel.text = String(format: Constants.floatTwoDecimals, productsArray[indexPath.row].price) + Constants.currencyPound

DispatchQueue.main.async {
let productPhotoURL = self.googlePhotosArray.first?.link ?? Constants.defaultProductPhotoURL
let resourcePhoto = ImageResource(downloadURL: URL(string: productPhotoURL)!, cacheKey: productPhotoURL)

cell.productImageView.kf.setImage(with: resourcePhoto)
}

// Customize AddToCart btn
cell.addToCartBtn.layer.cornerRadius = 8
cell.addToCartBtn.layer.borderWidth = 2
cell.addToCartBtn.layer.borderColor = UIColor.white.cgColor

return cell
}


// Set URL Google
extension URLGoogle{
static let googleAPIUrl = "https://www.googleapis.com/customsearch/v1?q="
static let googleSearchPhotosOnly = "&imgType=photo&imgSize=medium&searchType=image"
static let googleSearchEngineID = "&cx=004797504301667307438:v974oybby28"
static let googleAPIKey = "&key=AIzaSyA_QlOnYMZLbFCV_oh49Z97_tx7zA-Qeig"
}

这是错误:

enter image description here

这是我的项目的源代码,也许比这个示例对您有更多帮助:https://bitbucket.org/florentin89/shoppingland/src/c0d06b7d5a307ca8ee6f4ab6f962e81f2afbd0d5/ShoppingLand/Controller/ProductsViewController.swift?at=master&fileviewer=file-view-default

如果您需要更多信息,请随时询问我。

非常感谢您花时间阅读本文!

最佳答案

ChihuahuaExtreme 替换为 requestURL 中名称 textField 的内容

关于ios - 如何使用 Google API 从互联网获取图像并将第一个结果插入 UIImageView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51244709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com