在UICollectionView

时间:2017-05-17 14:31:44

标签: image swift3 nsurl

作为编写swift代码的初学者,我在以下代码中遇到错误:

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = self.collectionView?.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! CollectionViewCell

    // Configure the cell

    let imageURL = NSURL(string: usersImageArray[indexPath.row])
    print("The image url is \(imageURL)")
    let imageData = NSData(contentsOf: imageURL as! URL)

    cell.userImage.image = UIImage(data: imageData as! Data)
    cell.userName.text = usersNameArray[indexPath.row]

    return cell
}

imageURL确实包含图片网址,而imageData确实包含图片数据,但我仍然收到“致命错误:在解包可选值时意外发现nil”

我已经看过并阅读了其他问题和答案并尝试了但仍然无法找到问题。究竟是什么导致错误,虽然它确实包含URL和图像数据? enter image description here

更新: 我的CollectionViewCell类:

导入UIKit

class CollectionViewCell:UICollectionViewCell {

@IBOutlet weak var userImage: UIImageView!



@IBOutlet weak var userName: UILabel!


override func layoutSubviews() {

    super.layoutSubviews()
    self.makeImageRound()

}

func makeImageRound(){
    self.userImage.layer.masksToBounds = true
    self.userImage.layer.cornerRadius = self.userImage.frame.size.width/2.0
}

}

1 个答案:

答案 0 :(得分:0)

你已经给出了这样的URL:optional(imageurl),它按原样使用,所以你应该避免使用可选(。),以避免这种使用'!' userimagearray [indexpath.row]之后!

试试这个并打印图像,然后看看会发生什么

试试这个

 if imagedata == nil{

        //give some image 
   }
else{
       //give imagedata here
    }

并使用reuseidentifier =" cell"

不管你在故事板tableviewcell中采取什么样的细胞