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

时间:2017-01-22 23:48:32

标签: ios swift collectionview

如果与设备相关联的文件位于设备上,我正尝试将其添加并映像到collectionView单元格。

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

代码有什么问题吗?

enter image description here

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)

图像“下载”在录像带中。

1 个答案:

答案 0 :(得分:2)

一个快速说明。声明变量时,应始终使用camelCase。因此,ImageDownloaded应为imageDownloaded

在这里的极少数代码行中,它似乎在这一行崩溃了:

cell.ImageDownloaded.isHidden = false

这意味着变量ImageDownloaded可能是nil的变量。根据我的经验,这可能是因为您在单元类的代码中声明了变量,但关联的UIImageView未与声明相关联。因此,从故事板看起来,它看起来像是存在的,并且从代码看起来它存在,但是当你试图访问它时会突然中断。

如果您删除然后将任一部分粘贴回来,可能会发生这种情况。它看起来一样,但连接不再存在。要修复它,只需再次控制 - 拖动到代码声明旁边的空白圈。