指定String时无法将NSURL类型的值转换为NSString(Swift)

时间:2016-08-11 11:01:02

标签: ios swift string nsstring nsurl

我有一个方法可以在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。任何人都有一些见解?

2 个答案:

答案 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