使用枚举时实现 NSObject 协议时出现链接器错误?

Linker error when implementing NSObject protocol while using enums?

这是我在 Swift 中遇到问题的代码的精简版本:

enum E {
  case C
}

class Test: NSObject {
  var v: E = .C
}

当我尝试构建时,出现以下错误:

Undefined symbols for architecture x86_64:
  "__TWvdvC8TestTest4Test1vOS_1E", referenced from:
      __TFC8TestTest4Testm1vOS_1E in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

要重现这一点,只需创建一个新的 Swift 项目并将上面的代码直接粘贴到 "AppDelegate.swift" 中。或者,创建一个新文件并将其粘贴在那里!

我是不是遗漏了一些明显的东西,或者这是另一个 Swift 错误?我确实尝试删除所有派生数据和其他形式的巫毒魔法。

感谢您的帮助!

如果只有一种情况,编译器似乎会删除枚举?

我可以重现你的问题,当我添加第二个案例时它就消失了:

enum E {
  case C,D
}

class Test: NSObject {
   var v : E = .C
}

我在尝试此操作时注意到了一些事情:

  1. 在 Xcode 的当前非测试版中,我看到了您提到的错误(几乎可以肯定是 Swift 错误)。但是,如果我向枚举添加一个额外的值(case C,D),它编译得很好
  2. 我无法在最新的 Xcode 测试版(版本 6.3 (6D520o))中重现崩溃,这让我相信该错误已在 Swift 1.2[=16 中修复=]