UIWebView for GIF 后台loadData方法报错

UIWebView for GIF Background loadData method error

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

对于 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。同样适用于类型为 NSURLbaseURL,而不是 NSURL?.

在这种情况下,您可以传递 任何 值,例如 utf-8http://localhost/ 以满足 non-nil 标准。

检查 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/")!)