如果与设备相关联的文件位于设备上,我正尝试将其添加并映像到collectionView单元格。
该文件在那里,所以下面的代码取消隐藏图像,但是我得到一个错误,它发现没有尝试解包可选。
代码有什么问题吗?
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)
图像“下载”在录像带中。
答案 0 :(得分:2)
一个快速说明。声明变量时,应始终使用camelCase。因此,ImageDownloaded
应为imageDownloaded
。
在这里的极少数代码行中,它似乎在这一行崩溃了:
cell.ImageDownloaded.isHidden = false
这意味着变量ImageDownloaded
可能是nil
的变量。根据我的经验,这可能是因为您在单元类的代码中声明了变量,但关联的UIImageView
未与声明相关联。因此,从故事板看起来,它看起来像是存在的,并且从代码看起来它存在,但是当你试图访问它时会突然中断。
如果您删除然后将任一部分粘贴回来,可能会发生这种情况。它看起来一样,但连接不再存在。要修复它,只需再次控制 - 拖动到代码声明旁边的空白圈。