ในการโหลดรูปภาพใน iOS โดยใช้ swift เราจะใช้เซสชันงานข้อมูลอย่างง่าย ต้องโหลดรูปภาพในพื้นหลังเนื่องจากอาจมีขนาดใดก็ได้ และเราไม่ต้องการให้หยุดการทำงานของมุมมองหลักของเรา
ลองดูสิ่งนี้ด้วยความช่วยเหลือจากตัวอย่าง สร้างโครงการเปล่าและเพิ่มมุมมองภาพที่ว่างเปล่า
สร้างทางออก จากนั้นเราจะเขียนโค้ดเพื่อรับรูปภาพจาก URL นี่คือหน้าตาของแอปพลิเคชันของเราในขณะนี้

ตอนนี้ มาเพิ่มโค้ดเพื่อรับรูปภาพจาก URL กัน
func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
}
func downloadImage(from url: URL) {
getData(from: url) {
data, response, error in
guard let data = data, error == nil else {
return
}
DispatchQueue.main.async() {
self.image = UIImage(data: data)
}
}
} เมื่อเรารันโค้ดนี้ มันจะดาวน์โหลดรูปภาพจาก URL เราสามารถสร้างออบเจกต์รูปภาพและเริ่มต้น imgView ของเราด้วยออบเจกต์ใหม่
แต่มาสร้างส่วนขยายของวิธีนี้และใช้กันเถอะ
extension UIImageView {
func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
}
func downloadImage(from url: URL) {
getData(from: url) {
data, response, error in
guard let data = data, error == nil else {
return
}
DispatchQueue.main.async() {
self.image = UIImage(data: data)
}
}
}
} ตอนนี้ ใน viewDidLoad ของเรา (หรือที่อื่น ๆ ที่คุณต้องการ) ให้เพิ่มรหัสต่อไปนี้
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://static.independent.co.uk/s3fs-public/thumbnails/image/2017/09/12/11/naturo-monkey-selfie.jpg?w968h681")
self.imgView.downloadImage(from: url!)
} เมื่อเราเรียกใช้รหัสนี้บนอุปกรณ์ของเรา เราจะได้รับผลลัพธ์ดังต่อไปนี้
