如果文件存在,将图像添加到 collectionView Cell

Add image to collectionView Cell if file exists

如果与单元关联的文件位于设备上,我正在尝试向 collectionView 单元添加图像。

文件在那里,所以下面的代码取消隐藏图像,但是我得到一个错误,它发现 nil 试图解开可选。

代码有什么问题吗?

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell: JourneyCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! JourneyCollectionViewCell
    
    // query if file is on LDS and add image to indicate
    let cellPartName = self.partArray[indexPath.item].name
    let checkQuery = PFQuery(className: "downloadedAudio")
        checkQuery.whereKeyExists(cellPartName)
        checkQuery.fromLocalDatastore()
        checkQuery.getFirstObjectInBackground(block: { (object, error) in
            if error != nil || object == nil {
                print("The file does not exist locally on the device, hide the image.")
                //cell.ImageDownloaded.image = UIImage(named: "")

                // crashes on this line
                cell.ImageDownloaded.isHidden = true
            } else {
                print("the file already exists on the device, show the image.")
                //cell.ImageDownloaded.image = UIImage(named: "download")

                // crashes on this line
                cell.ImageDownloaded.isHidden = false
            }
        })


    return cell
    
}




the file already exists on the device, show the image.
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

图像“下载”在磁带中。

一个简短的笔记。声明变量时,您应该始终使用驼峰命名法。因此,ImageDownloaded 应该是 imageDownloaded

这里极少的几行代码,好像是在这一行崩溃了:

cell.ImageDownloaded.isHidden = false

这意味着变量ImageDownloaded很可能就是nil的变量。根据我的经验,这可能是由于您在单元格 class 的代码中声明了变量,但关联的 UIImageView 未连接到声明。因此,从情节提要来看,它似乎存在,从代码来看它似乎存在,但是当您尝试访问它时,它突然中断了。

如果您删除其中任一部分然后又将其粘贴回去,则可能会发生这种情况。看起来一样,但连接不再存在。要修复它,只需 control-drag 再次进入代码声明旁边的空圆圈。