【问题标题】:Swift Enum does not conform to protocol CaseIterableSwift Enum 不符合协议 CaseIterable
【发布时间】:2018-07-27 12:10:19
【问题描述】:

我想在枚举上使用CaseIterable,就像它在 Swift 文档中显示的那样,但是当我这样做时,我总是得到错误:

使用未声明的类型 CaseIterable

但它应该可以工作,因为它在文档中以相同的方式显示。

enum Team: CaseIterable
{
    case team1, team2
}

我有什么遗漏吗?

【问题讨论】:

  • 我无法在 Xcode 10 beta 4 中重现此问题,您使用的是哪个版本?
  • 这是您的确切代码吗,或者您是否还有其他具有关联值的案例,例如case team3(name: String)
  • @MartinR 这是我的确切代码,如果我从示例中复制工作代码而不做任何更改,我也会得到同样的错误。
  • 哦,好吧,我想我找到了我的问题......我猜这在 Xcode 9 中不起作用,是吗?
  • 不,这是 Swift 4.2 的新特性。 – 但是 Xcode 9 应该抱怨未定义的协议 CaseIterable

标签: swift enums


【解决方案1】:

答案很简单,就是不要使用10以下的Xcode版本。我是个白痴。

【讨论】:

  • 这并不能完全解释它:Xcode 9 会抱怨 undeclared type 'CaseIterable' 并且不会添加 typealias AllCases ...
  • 是的。我添加了一个应该添加 CaseIterable 的扩展并忘记了它。没有你所说的扩展名。
  • 我建议您相应地更新问题和答案,这样才有意义,并且可能对未来的读者有所帮助。
  • 我应该删除错误的信息,还是只在底部添加一个EDIT?对不起这个问题
  • 删除错误信息。添加所有必要的相关信息,以使问题清晰且可重现。
【解决方案2】:

CaseIterable 是 swift 4.2 的一个特性。您的选择是: 1.下载Xcode 10,这个版本的swift自带-link 2. 继续使用 Xcode 9,下载 Swift 4.2 快照 - link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多