从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错误。
我有什么遗失的吗?或者我可以获得一些更详细的错误消息?
提前感谢您的帮助!
抱歉,我无法提供较小的最小工作示例,我只是不知道如何隔离这个...
答案 0 :(得分:1)
好的,我们已经解决了这个问题。事实证明,错误信息正如预期的那样无益。
这个问题结果证明是一个非常愚蠢的问题。上面提到的orderService
有一个在.h
文件中声明的方法,它在.m
文件中未实现,从未使用过。它未实现的事实似乎触发了编译器错误,其中包含关于Int
无法转换为DarwinBoolean
的令人难以置信的无用信息。
删除头文件中的声明(或实现不需要的方法)解决了这个问题。