我有一个方法可以在UIWebView
:
func setImageForURL(urlString:String, completion:((image:UIImage?)->Void)?) {
self.completion = completion
guard let url = NSURL(string: urlString) else {
self.completion?(nil)
return
}
let request = NSURLRequest(URL: url)
webview = UIWebView(frame: self.bounds)
webview!.delegate = self
webview?.scalesPageToFit = true
webview!.loadRequest(request);
}
在以下loadWebsite
方法中调用该方法:
func loadWebsite(item:ShareItem) {
activitySpinner.startAnimating()
imageView.setImageForURL((item.asset as? String)!) { (image) in
self.showActionButton(true)
self.activitySpinner.stopAnimating()
self.actionButton.titleLabel?.text = "Open"
}
}
我在以下一行遇到了崩溃:
imageView.setImageForURL((item.asset as? String)!) { (image) in
Could not cast value of type 'NSURL' (0x10fd8ee98) to 'NSString' (0x10eccdb48).
的
我不明白为什么,因为我将类型指定为String
,而不是NSString
。任何人都有一些见解?
答案 0 :(得分:2)
您无法像这样将NSURL转换为字符串(从错误日志中,我认为item.asset
会返回NSURL
而不是String)
。
您需要使用:
imageView.setImageForURL(item.asset.absoluteString) { (image) in
self.showActionButton(true)
self.activitySpinner.stopAnimating()
self.actionButton.titleLabel?.text = "Open"
}
答案 1 :(得分:1)
更改行
imageView.setImageForURL((item.asset as? String)!) { (image) in
到
imageView.setImageForURL((item.asset as? NSURL)!) { (image) in
如果item.asset
是一个字符串,那么你的 -
imageView.setImageForURL(NSURL(string:(item.asset as? String)!)) { (image) in