无法为没有参数的“URL”类型调用初始化程序 - Swift 3

Posted

技术标签:

【中文标题】无法为没有参数的“URL”类型调用初始化程序 - Swift 3【英文标题】:Cannot invoke initializer for type 'URL' with no arguments - Swift 3 【发布时间】:2016-12-14 10:04:47 【问题描述】:

接收错误:

无法为没有参数的“URL”类型调用初始化程序

以下是代码 -

 var databasePath = URL()

我已经全局声明了这个变量。也试过了

 var databasePath: URL!
 if let url = NSURL().absoluteURL  //error 1- Consecutive declarations on a line must be separated by ';'
 databasePath = url //error2 - Variable used within its own initial value
 

如果将上面的代码写成 var databasePath = URL() 的替换,则会收到以上 2 个错误。

我是 Swift 的初学者。请告诉我解决方案。

【问题讨论】:

URL 是不可变的对象。你应该这样做:URL(fileURLWithPath: "/tmp/db") 【参考方案1】:

URL 初始化器必须有一个参数。

基本上有两种:

文件系统中的 URL

let databaseURL = URL(fileURLWithPath:"/path/to/file.ext")

具有显式方案的 URL(例如 httpftp 等)

let databaseURL = URL(string:"http://myserver/path/to/file.ext")!

如果保证 URL 有效,则可以解包 (!),否则使用光学绑定 (if let)

【讨论】:

【参考方案2】:

这样声明url

var url: URL = NSURL() as URL

【讨论】:

【参考方案3】:

Swift- 5 种简单的方法

var fileDownloadedURL = URL(string: "")

【讨论】:

以上是关于无法为没有参数的“URL”类型调用初始化程序 - Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

无法使用类型为“()”的参数列表为类型“Int”调用初始化程序

如何解决错误:无法调用类型为 `......` 的参数列表类型为 `...` 的初始化程序?

无法使用类型为“”的参数列表调用类型“”的初始化程序

无法使用类型为“(数字)”的参数列表调用类型“Int”的初始化程序

无法使用类型为 [重复] 的参数列表调用类型“NSAttributedString”的初始化程序

无法使用类型为“(UInt32)”的参数列表调用类型“CGBitmapInfo”的初始化程序