【问题标题】:extraneous argument label 'path:' in call调用中的无关参数标签“路径:”
【发布时间】:2018-04-24 02:53:17
【问题描述】:

我是 swift 和 xcode 的新手,当我在 Zip.quickUnzipFile 方法中插入带标签的参数时出现此错误。 当我删除 extraneous argument label 时,我得到了这个: 我正在使用Zip 库进行快速操作。

【问题讨论】:

  • 点击链接可以找到第一个问题的解决方案(在快速函数部分)。要解决第二个问题⌃⌘-单击URL 并比较init 方法。正确的 init 方法取决于 url 是远程 URL 还是文件系统 URL
  • ⌃⌘-单击URL,但它把我带到了没有构造函数定义的基础库。这将是一个文件系统路径字符串。
  • URL(url) 类型为URL 还是URL??如果是URL?,它可能会解释为什么它找不到合适的方法。
  • 然后按⇧⌘0(零而不是O)并在搜索字段中输入URL(确保选择了Swift)并选择URL。阅读init 方法。开发人员必须习惯于阅读文档。
  • ... 或使用代码完成。删除URL(url)。然后重新输入URL( 并查看 Xcode 的建议。

标签: swift xcode


【解决方案1】:

我认为这是经典的 Xcode “给你一个隐藏真实错误的虚假错误”。这些错误是虚假的。

这里有两个问题,但 Xcode 都没有给你。

  1. 您需要将投掷方法包装在 do/catch 中,或者您需要在 try 之后放置 ?!
  2. URL 的字符串初始值设定项是可选初始值设定项,您调用的该方法不能接受初始值设定项。确保首先使用可选链解包。
  3. URL 在其初始化程序中需要一个参数标签“字符串”。

我不知道上下文,但类似:

guard let url = URL(string: url) else {
  return
}
let unzipDirectory = try? Zip.quickUnzipFile(url)

【讨论】:

  • 你会得到同样的错误。 Swift 3+ 中没有没有参数标签的init 方法。
  • 尽管如此,它并没有帮助。根据 OP 的评论,该 URL 是一个文件系统 URL,因此它是错误的 init 方法。
  • URL 与 http/local 无关。如果路径正确,则不需要其他初始化程序。
  • 你应该。对于文件系统 URL(参数是以/ 开头的字符串路径),您必须使用URL(fileURLWithPathfile:// 方案是隐式添加的。 URL(string 初始化器用于包含方案的 url 字符串。
  • 啊。是的。你是对的。但在后台,该初始化程序使用的是字符串 one。你可以很容易地在前面加上“file://”,但你是对的,当已经有了一些东西时,不需要重新发明轮子。
【解决方案2】:

如下所示初始化url,然后将其传递给quickUnzipFile

if let url = URL(string: url) {
    try Zip.quickUnzipFile(url)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多