作为编写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和图像数据?
更新: 我的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
}
}
答案 0 :(得分:0)
你已经给出了这样的URL:optional(imageurl),它按原样使用,所以你应该避免使用可选(。),以避免这种使用'!' userimagearray [indexpath.row]之后!
试试这个并打印图像,然后看看会发生什么
试试这个
if imagedata == nil{
//give some image
}
else{
//give imagedata here
}
并使用reuseidentifier =" cell"
不管你在故事板tableviewcell中采取什么样的细胞