【问题标题】:Enum element with associated values must have at least one associated value具有关联值的枚举元素必须至少具有一个关联值
【发布时间】:2019-09-24 16:59:21
【问题描述】:

这种使用关联值定义枚举的语法在 Swift 4.2 中可以正常工作

enum NetworkService {
    case lookUp(type: String)
    case allLookUps()
}

当我尝试在 Xcode 10.2 和 Swift 5 中转换我的代码时,它会抛出错误提示

具有关联值的枚举元素必须至少有一个关联 价值

在这种特殊情况下,为 allLookUps() 关联值没有任何意义。那么 Swift 5 的最佳实践是什么?

【问题讨论】:

  • 你写的在这种特殊情况下为 allLookUps() 关联值没有任何意义。现在阅读建议的修复。哪一个符合你的说法?
  • Xcode10.2 有一些问题。当我尝试选择第一个修复时,它只删除了一个 () 括号,第二个建议使它看起来像 getLookUpsVoid() 哈哈!猜猜摆脱 () 似乎工作正常。猜猜我在这里发了一个多余的帖子:P
  • 如果你不需要关联的值然后删除它并保留case allLookUps,它不能为空
  • 从这里寻求帮助 -> medium.com/@PhiJay/…
  • 当然,Fix #1 是正确的。 没有关联值表示没有括号。

标签: swift


【解决方案1】:

只需去掉大小写后面的括号()即可:

enum NetworkService {
    case lookUp(type: String)
    case allLookUps
}

【讨论】:

  • 那个解决方案没问题,但是 Xcode 中的这个警告非常棘手,我无法修复这个警告,直到我将枚举声明移动到另一个文件中。
  • @Argus 在 Xcode 11.3.1 中,我可以通过运行 Product...Clean Build Folder 在删除 () 后摆脱粘性警告。
【解决方案2】:

您不需要在第二种情况下使用括号“allLookUps” 仅当您要向 Enum 案例添加关联值时才包含括号。

来源:https://youtu.be/EwHmyAUeG3I

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多