UITextField 用于更改 Swift 5 中的 API URL



我是新的iOS开发者

我想使用文本字段更改网站徽标 API 以更改 URL。

如何更改带有 *** 的行 在我的视图控制器中使用 var 和文本字段?

使用屏幕截图,会更容易理解我想要什么?谢谢!!!人。OneDriveLink。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()
}

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

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

  1. 用一个大写字母开始你的类型,比如ImageLogoimageLogo
  2. 避免静电
  3. 避免单例(它们几乎是静态的(
  4. 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()
}
}
  1. 在视图控制器中存储QuoteService的实例
  2. 在该实例上呼叫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()
}
}
}
/* ... */
}

希望对您有所帮助。

我想你想在 Web 服务中传递textfield文本(URL按用户输入(

首先在函数定义中添加参数url_strgetQuote并在该参数上传递textfield

fun getQuote(url_str :  String, callback : @escaping(Bool, ImgaeLogo/)->void){
}

相关内容

  • 没有找到相关文章

最新更新