gpt4 book ai didi

ios - UITextField 在 Swift 5 中更改 API URL

转载 作者:行者123 更新时间:2023-12-01 19:39:00 25 4
gpt4 key购买 nike

我是新的 iOS 开发者

我想使用文本字段更改 websiteLogo API 以更改 URL。

我怎样才能用***改变行
在我的 View Controller 中有一个 var 和一个文本字段?

使用屏幕截图会更容易理解我想要什么?谢谢 !!!伙计们。 OneDrive 链接。 1drv.ms/u/s!AsBvdkER6lq7klAqQMW9jOWQkzfl?e=fyqOeN

private init() {}
**private static var pictureUrl = URL(string: "https://logo.clearbit.com/:http://www.rds.ca")!**

private var task: URLSessionDataTask?

func getQuote(callback: @escaping (Bool, imageLogo?) -> Void) {

let session = URLSession(configuration: .default)
task?.cancel()

task = session.dataTask(with: QuoteService.pictureUrl) { (data, response, error) in
DispatchQueue.main.async {

guard let data = data, error == nil else {
callback(false, nil)
return
}

guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
callback(false, nil)
return
}

let quote = imageLogo(image: data)
callback(true, quote)
print(data)
}
}
task?.resume()
}

最佳答案

一、请不要使用屏幕截图显示您的代码。 如果您需要帮助,其他人通常会复制/粘贴您的代码以检查它有什么问题。

您的代码存在一些小问题。我的一些提示:

  • 以大写字母开头,例如 ImageLogo不是 imageLogo :
  • 避免静电
  • 避免单例(它们几乎是静态的)
  • 交到pictureUrl进入 getQuote
  • struct ImageLogo {
    var image:Data
    }

    class QuoteService {
    private var task: URLSessionDataTask?

    func getQuote(from pictureUrl:URL, callback: @escaping (Bool, ImageLogo?) -> Void) {
    let session = URLSession(configuration: .default)
    task?.cancel()

    task = session.dataTask(with: pictureUrl) {
    (data, response, error) in
    DispatchQueue.main.async {
    guard let data = data, error == nil else {
    callback(false, nil)
    return
    }

    guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
    callback(false, nil)
    return
    }

    let quote = ImageLogo(image: data)
    callback(true, quote)
    print(data)
    }
    }
    task?.resume()
    }
    }

  • 存储 QuoteService 的实例在您的 View Controller 中
  • 调用 getQuote在那种情况下,交出pictureUrl
  • class ViewController : UIViewController {
    var quoteService:QuoteService!

    override func viewDidLoad() {
    self.quoteService = QuoteService()
    }

    func toggleActivityIndicator(shown:Bool) { /* ... */ }
    func update(quote:ImageLogo) { /* ... */ }
    func presentAlert() { /* ... */ }

    func updateconcept() {
    guard let url = URL(string:textField.text!) else {
    print ("invalid url")
    return
    }
    toggleActivityIndicator(shown:true)
    quoteService.getQuote(from:url) {
    (success, quote) in
    self.toggleActivityIndicator(shown:false)
    if success, let quote = quote {
    self.update(quote:quote)
    } else {
    self.presentAlert()
    }
    }
    }

    /* ... */

    }

    希望能帮助到你。

    关于ios - UITextField 在 Swift 5 中更改 API URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58190274/

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