尝试将图像URL作为字符串时应用程序崩溃

时间:2017-04-29 01:11:23

标签: ios swift kingfisher

我有这个函数请求API:

Alamofire.request(URL).responseObject{ (response: DataResponse<Movie>) in
        print("|MovieController| Response is: \(response)")

        let movie = response.result.value

        if let posterURL = movie?.posterURL {
            print("Poster URL: \(posterURL)")

            let imgStg: String = posterURL
            print("-------> Image String: \(imgStg)")


        }
}

我在我的控制台上打印posterURL,但当我尝试让imgStg:String = posterURL时,应用程序崩溃。

首先我试图这样做:

let imgStg: String = movie!.posterURL!
let imgURL: URL? = URL(string: imgStg) //Error here: Cannot call value of non-function type 'String'
let imgSrc = ImageResource(downloadURL: imgURL!, cacheKey: imgStg)

但是xcode显示了这个错误。所以我试着看看我在'imgStg'中得到了什么,并且在执行此行时应用程序崩溃了。这是为什么?我怎样才能做到这一点?

PS:我的最终目标是使用KingFisher缓存图像:

posterImageView.kf.setImage(with: imgSrc)

错误: error - app crashed

更新

错误: problem with URL

更新2:尝试从头开始输入,这是选项: enter image description here

2 个答案:

答案 0 :(得分:1)

您的图像实际上显示了断点(而不是您想象的运行时错误)。

要禁用它,只需点击左边距行。要禁用所有断点,请改用命令 + Y

<强>断点即可。 breakpoint只是给定源代码行上的强制停止。因此,它根本不与特定的构建时或运行时错误相关。

答案 1 :(得分:1)

错误声明您正在调用String而不是方法。 我可以看到你在请求中传递URL(不建议使用相同的名称)作为参数,因此它变得混乱并抛出错误。尝试将名称从URL更改为requestURL或其他内容。

替换它:

Alamofire.request(URL).responseObject { (response: DataResponse<Movie>)

使用:

Alamofire.request(requestURL).responseObject { (response: DataResponse<Movie>)

并且肯定您在URL处声明了requestURL在那个地方的变化。