0

在 swift 3.1 发布之前,我的以下代码运行良好。

func loadImage() {

    id = userPhotoModel.id

    let fileManager = FileManager.default

    let imagePath = (self.getDirectoryPath() as NSString).appendingPathComponent(photoName)

    if fileManager.fileExists(atPath: imagePath){
        let imageFromPath = resizeImage(named: (contentsOfFile: imagePath))

        print("name of photo retrieved: \(photoName)")

        self.userPhoto.image = imageFromPath

    }else{
        print("No Image")
    }
}

现在,swift 3.1 想添加 as!字符串到:

let imageFromPath = resizeImage(named: (contentsOfFile: imagePath) as! String)

但是,当我运行该应用程序时,它会在此位置崩溃,并且没有错误消息,如下图所示。

这是什么原因造成的?

在此处输入图像描述

编辑:这是 resizeImage 函数

fileprivate func resizeImage(named name: String) -> UIImage
{

    var image = UIImage(named: name)

    if image!.size.height > image!.size.width
    {
        self.userPhoto.contentMode = .scaleAspectFit
    }
    else
    {
        image = image!.resizeTo(self.userPhoto.bounds)
    }
    return image!
}
4

1 回答 1

1

问题是该行中令人困惑的语法:

let imageFromPath = resizeImage(named: (contentsOfFile: imagePath))

那应该只是:

let imageFromPath = resizeImage(named: imagePath)

在任何 Swift 3.x 中都不需要强制转换并且是正确的。

于 2017-04-05T04:34:43.183 回答