Swift:'Int' 无法转换为 'ObjCBool'

Swift: 'Int' is not convertible to 'ObjCBool'

在我的代码中有一个惰性变量:

lazy var myService = {
    return JSObjection.defaultInjector().getObject(MyService) as? MyService
}()

在同一个文件中,我尝试调用 myService:

的函数
func foo() {
    myService?.getSomeStringsFrom(nil)
}

MyService 在 Objective-C 源文件中定义:

@interface MyService : NSObject
- (NSArray *) getSomeStringsFrom:(NSString *)aString;
@end

@implementation MyService
- (NSArray *) getSomeStringsFrom:(NSString *)aString {
    return nil;
}
@end

代码无法编译,因为getSomeStringsFrom(nil)的调用触发错误消息(两次):

<unknown>:0: error: 'Int' is not convertible to 'ObjCBool'

这没有意义 - 我对其他服务也这样做,XCode 没有抱怨。这是编译器错误吗?我正在使用 XCode 6.4 和 Swift 1.2.

编辑:在深入研究代码后,我发现错误消息也可以通过实例化 MyService 触发。在下面的回答中,您将看到问题的真正"root"。

列出的 Objective-C 文件不完整。一开始,有一个关键的枚举定义在我的 Swift 代码中使用该文件后立即中断了编译过程:

typedef NS_ENUM(BOOL, Stuff) {
    StuffX = YES,
    StuffY = NO
}; 

显然,Swift 不喜欢 BOOL 枚举。我不知道为什么,但是一旦我将 BOOL 转换为 Boolean,错误就消失了。