我有这个函数请求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)
答案 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
在那个地方的变化。