Bagaimana cara menampilkan gambar menggunakan URL?

Kesalahannya adalah: "kesalahan fatal: secara tak terduga ditemukan nil saat membuka nilai Opsional &"

Saya melakukan hal berikut di ViewController:

var imageURL:UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()
    let url = NSURL(string:"http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg")
    let data = NSData(contentsOfURL:url!)
    if data!= nil {
        imageURL.image = UIImage(data:data!)
    }
}

Saya benar-benar tidak mengerti mengapa ia akan melaporkan kesalahan pada

imageURL.image = UIImage(data:data!)

sementara saya sudah mengatakan tidak akan melanjutkan jika datanya nihil. Ini bukan masalah tautan. Juga tidak ada masalah dengan "data". Saya mencoba mencetaknya dan ternyata tidak nihil.

Di sini saya memiliki pendekatan di mana Anda tidak akan mengalami kerusakan apa pun saat mengunduh gambar. Sekarang saat ini Anda menggunakan kode berikut:

override func viewDidLoad() {
    super.viewDidLoad()
    let url = NSURL(string:"http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg")
    let data = NSData(contentsOfURL:url!)
    if data!= nil {
        imageURL.image = UIImage(data:data!)
    }
}

Sekarang ubah kode dengan yang ini, Jika Anda melanjutkan dengan pendekatan ini:

override func viewDidLoad() {
    super.viewDidLoad()
    let url = NSURL(string:"http://cdn.businessoffashion.com/site/uploads/2014/09/Karl-Lagerfeld-Self-Portrait-Courtesy.jpg")
    let data = NSData(contentsOfURL:url!) 

    // It is the best way to manage nil issue. 
    if data.length > 0 {
        imageURL.image = UIImage(data:data!)
    } else {
        // In this when data is nil or empty then we can assign a placeholder image 
        imageURL.image = UIImage(named: "placeholder.png")
    }
}

Dan saya yakin bahwa Jika Anda menggunakannya, kerusakan nil Anda akan terpecahkan.

Komentar (1)

Anda dapat mengatur gambar dalam tampilan gambar dengan menggunakan UIImageView + AFNetworking

Pertama Anda menyeret kelas UIImageView + AFNetworking objective c dalam proyek Anda dan mengimpor kelas UIImageView + AFNetworking.h dalam file header jembatan proyek Anda. Dan gunakan baris ini untuk mengatur gambar dengan placeholder di imageview. dengan ini Anda dapat mengatur beberapa gambar dalam tampilan tanpa macet.

yourImageview.setImageWithURL(NSURL(string: self.yourArray.objectAtIndex(indexPath.row).objectForKey("imageurl") as! String), placeholderImage: UIImage(named:"NoUserimage.png"))
Komentar (0)

Methode

extension UIImage {

/// Loads image asynchronously
///
/// - Parameters:
///   - url: URL of the image to load
///   - callback: What to do with the image

class func loadFromURL(url: NSURL, callback: (UIImage)->()) {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), {

        let imageData = NSData(contentsOfURL: url)
        if let data = imageData {
            dispatch_async(dispatch_get_main_queue(), {
                if let image = UIImage(data: data) {
                    callback(image)
                }
            })
        }
    })
}

}

Penggunaan

    let logoUrl = ImageService().buildImageString((self.uiConfig?.headerImage)!, imageMode: .Uniform, size: self.headerImage.frame.size)
    UIImage.loadFromURL(logoUrl, callback: { (image: UIImage) -> () in
        self.headerImage.image = image
    }) 
Komentar (0)