【问题标题】:Cannot convert value of type 'Int' to raw type 'DarwinBoolean'无法将“Int”类型的值转换为原始类型“DarwinBoolean”
【发布时间】:2015-09-21 13:23:57
【问题描述】:

从 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  

由于这似乎没有多大帮助,我们开始尝试通过使用古老的“注释所有代码并取消注释直到它中断”方法来定位错误。

我跟踪了该文件 (PDFViewController.swift) 中引发错误的位置。当我注释掉那行代码时,代码会编译,如果我把它留在里面,我会收到上述错误。该行没有什么特别之处,它只是调用了一个应该返回属性字符串的 NSArray 的 Objective-C 服务:

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

thet 方法的声明是:

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

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

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

提前感谢您的帮助!

对不起,我不能提供一个更小的最小工作示例,我只是不知道如何隔离这个......

【问题讨论】:

    标签: xcode swift2 xcode7


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多