Swift 枚举不符合协议 CaseIterable

4
我想在枚举中像Swift文档中所示一样使用CaseIterable,但是当我这样做时,总是会出现以下错误:

使用未声明的类型CaseIterable

但它应该可以工作,因为文档中也是这样展示的。
enum Team: CaseIterable
{
    case team1, team2
}

我是否漏了什么?


2
我在 Xcode 10 beta 4 中无法重现此问题,您使用的是哪个版本? - Hamish
3
那是你的确切代码吗?还是你有另一个带有“相关值”的情况,例如 case team3(name: String) ? - Martin R
@MartinR 这是我的确切代码,如果我复制示例中的工作代码而不更改任何内容,我也会得到相同的错误。 - Christian Schmidt
噢,好吧,我想我找到了我的问题... 我猜这在Xcode 9中不起作用,对吗? - Christian Schmidt
1
不,那是Swift 4.2的新功能。但是Xcode 9应该会抱怨一个未定义的协议“CaseIterable”。 - Martin R
显示剩余2条评论
2个回答

0

CaseIterable是Swift 4.2的一个特性。您有以下两个选项: 1. 下载带有此版本Swift的Xcode 10 - link 2. 继续使用Xcode 9,并下载Swift 4.2快照 - link


0

答案非常简单,只要不使用低于10的Xcode版本就可以了。我是个白痴。


1
这并没有完全解释清楚:Xcode 9会抱怨一个“未声明类型'CaseIterable'”的问题,并且不会添加一个“typealias AllCases”... - Martin R
是的,确实如此。我添加了一个扩展,本应该添加CaseIterable,但忘记了。如果没有这个扩展,你说的就是正确的。 - Christian Schmidt
我建议您相应地更新问题和答案,以便对未来的读者有意义并可能有所帮助。 - Martin R
我应该删除错误的信息,还是只在底部添加一个“编辑”?对不起,问了这个问题。 - Christian Schmidt
删除错误信息。添加所有必要的相关信息以使问题清晰且可重现。 - Martin R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接