为什么我得到错误解包如果它有值,可以选择?

时间:2015-06-06 16:22:19

标签: ios swift uiimage uicollectionviewcell optional

我正试图从网页内容中设置图片时撞到墙上。

图像位于UICollectionViewCell的子类中。我通过将UIImage视图拖动到单元控制器来为它创建了一个插座。在我的收藏控制器中,我试图将图像设置为像thi:

这样的外部图像
if let url = NSURL(string: "https://yourfightsite-vod.s3-eu-west-1.amazonaws.com/posters/543e80b7aec51.jpg") {
    if let data = NSData(contentsOfURL: url) {
        if let image = UIImage(data: data) {
            cell.posterImage.image = image
        } else {
            println("Did not get image")
        }
    } else {
        println("Did not get NSData")
    }
} else {
    println("Did not get NSURL")
}

所有if let行的原因是因为某处它给了我以下错误消息:

  

致命错误:在解包可选值时意外发现nil

但是不能为我的生活找到哪里。如果我打印image常数的值,我得到一个Optional,我猜是指向内存中该图像的指针:

<UIImage: 0x788990d0>, {1754, 2480}

两个数值似乎也分别映射到外部图像的宽度和高度(以像素为单位)。

那是怎么回事?为什么我不能在收集单元格视图中设置血腥图像?!

编辑:整个方法:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! VODTitleCollectionViewCell

    cell.backgroundColor = UIColor.darkGrayColor()
    cell.onDemandTitle = results[indexPath.row]

    if let url = NSURL(string: "https://yourfightsite-vod.s3-eu-west-1.amazonaws.com/posters/543e80b7aec51.jpg") {
        if let data = NSData(contentsOfURL: url) {
            if let image = UIImage(data: data) {
                print(image)
                print(cell.posterImage)
                cell.posterImage?.image = image
            } else {
                println("Did not get image")
            }
        } else {
            println("Did not get NSData")
        }
    } else {
        println("Did not get NSURL")
    }

    return cell
}

0 个答案:

没有答案