UITextField 更改 API URL in Swift 5
UITextField to change API URL in Swift 5
我是新手iOS开发者
我想用文本字段更改网站徽标 API 以更改 URL。
我怎样才能用***换行
在我的 viewcontroller?
中有一个 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()
}
首先,请不要使用屏幕截图显示您的代码。如果您需要帮助,其他人通常copy/paste检查您的代码有什么问题。
您的代码存在一些小问题。我的一些提示:
- 以大写字母开头,例如
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
的实例
- 在该实例上调用
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
由用户输入)
首先在 getQuote
函数定义中添加一个参数 url_str
并在该参数上传递 textfield
值
fun getQuote(url_str : String, callback : @escaping(Bool, ImgaeLogo/)->void){
}
我是新手iOS开发者
我想用文本字段更改网站徽标 API 以更改 URL。
我怎样才能用***换行 在我的 viewcontroller?
中有一个 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()
}
首先,请不要使用屏幕截图显示您的代码。如果您需要帮助,其他人通常copy/paste检查您的代码有什么问题。
您的代码存在一些小问题。我的一些提示:
- 以大写字母开头,例如
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
的实例 - 在该实例上调用
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
由用户输入)
首先在 getQuote
函数定义中添加一个参数 url_str
并在该参数上传递 textfield
值
fun getQuote(url_str : String, callback : @escaping(Bool, ImgaeLogo/)->void){
}