无法将类型 'Int' 的值转换为原始类型 'DarwinBoolean'

Cannot convert value of type 'Int' to raw type 'DarwinBoolean'

从 Apple 开发者论坛 (https://forums.developer.apple.com/message/59905#59905) 交叉发布此内容。

我们最近第一次尝试使用 Xcode 7 GM 版本构建我们的项目。我在下面解释的我们遇到的问题在 Xcode 7.0 (7A220) 中仍然存在。

该项目部分由旧的 Objective-C 代码和部分较新的 Swift 代码组成。编译时,构建过程失败并出现以下错误:

<unknown>:0: error: cannot convert value of type 'Int' to raw type 'DarwinBoolean'  
<unknown>:0: error: cannot convert value of type 'Int' to raw type 'DarwinBoolean'  

在此错误之前运行的行是:

CompileSwift normal x86_64 <path_to_project>/PDFViewController.swift  

由于这似乎没有太大帮助,我们开始尝试通过使用旧的 "comment all code and uncomment until it breaks" 方法来定位错误。

我追踪到错误被抛出到该文件中的一行 (PDFViewController.swift)。当我注释掉该行时,代码会编译,如果我保留它,则会出现上述错误。该行没什么特别的,它只是调用一个 Objective-C 服务,该服务应该 return 一个属性字符串的 NSArray:

var attributedStrings: [NSAttributedString] = orderService.attributedStringsForNotes(notes)  

该方法的声明是:

- (NSArray<NSAttributedString *> *) attributedStringsForNotes:(NSString *) aString;  

评论它的整个实现并不能解决编译时问题,所以我开始认为这可能是一个 Xcode 错误。

有什么我想念的吗?或者我可以获得更详细的错误消息?

在此先感谢您的帮助!

抱歉,我无法提供更小的最小工作示例,我只是不知道如何隔离它...

好的,我们已经解决了这个问题。正如预期的那样,错误消息被证明是毫无帮助的。

这个问题原来是一个非常愚蠢的问题。上面提到的 orderService 有一个在 .h 文件中声明的方法,该方法在 .m 文件中未实现并且从未使用过。它未实现的事实似乎触发了编译器错误,并带有关于 Int 无法转换为 DarwinBoolean.

的令人难以置信的无用消息

删除头文件中的声明(或实现不需要的方法)解决了问题。