无法转换类型' Int'原始类型' DarwinBoolean'

时间:2015-09-21 13:23:57

标签: xcode swift2 xcode7

从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  

由于这似乎没有什么帮助,我们开始尝试通过做好旧的&#34;对所有代码进行评论并取消注释直到它破坏&#34; -approach来找到错误。

我跟踪了错误被抛出到该文件中一行的位置(PDFViewController.swift)。当我评论该行时,代码编译,如果我留下它,我得到上述错误。这条线没什么特别的,它只是调用一个Objective-C服务,该服务应该返回一个属性字符串的NSArray:

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

thet方法的声明是:

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

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

我有什么遗失的吗?或者我可以获得一些更详细的错误消息?

提前感谢您的帮助!

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

1 个答案:

答案 0 :(得分:1)

好的,我们已经解决了这个问题。事实证明,错误信息正如预期的那样无益。

这个问题结果证明是一个非常愚蠢的问题。上面提到的orderService有一个在.h文件中声明的方法,它在.m文件中未实现,从未使用过。它未实现的事实似乎触发了编译器错误,其中包含关于Int无法转换为DarwinBoolean的令人难以置信的无用信息。

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