我一直收到以下错误:无法使用列表类型为'(NSData,MIMEType:String,textEncodingName:nil,baseURL:nil)'的参数调用loadData

用于loadData方法。

var filePath = NSBundle.mainBundle().pathForResource("fractal", ofType: "gif")

var gif = NSData(contentsOfFile: filePath!)

var webViewBG = UIWebView(frame: self.view.frame)

webViewBG.loadData(gif!,MIMEType: "image/gif",textEncodingName: nil,baseURL: nil) // this line of code causes the build error

最佳答案

您应该检查loadData函数签名,即:

func loadData(_ data: NSData, MIMEType MIMEType: String,
  textEncodingName textEncodingName: String, baseURL baseURL: NSURL)
textEncodingNameString,而不是String?,因此您不能传递nil。类型为baseURL而不是NSURLNSURL?同样适用。

在这种情况下,您可以传递utf-8http://localhost/之类的任何值来满足非null条件。

检查this thread以了解其他方法。

尝试最小化!的使用,以避免运行时失败。像这样的东西更健壮:
guard let filePath = NSBundle.mainBundle().pathForResource("fractal", ofType: "gif"),
  let gifData = NSData(contentsOfFile: filePath) else {
    return
}

var webViewBG = UIWebView(frame: self.view.frame)
webViewBG.loadData(gifData, MIMEType: "image/gif", textEncodingName: "utf-8",
  baseURL: NSURL(string: "http://localhost/")!)

10-08 16:08