我花了很多时间尝试自己解决这个问题,并且已经在SO上检查了可用的答案并且出现了同样的错误 . 所以这里列出了我已经从可能的原因中排除的东西:
-
框架没有问题,如here所示 . 我创建了另一个具有相同框架集的项目,一切都很好
-
否issue with SwiftyJSON,在测试项目中也可以正常工作
-
代码中未突出显示编译问题
-
我使用比较工具查看了两个不同的
project.pbxproj
文件(来自我原来的项目和新测试项目),找到项目设置中的一些差异,都是一样的 -
我还比较了两个项目的构建命令选项,并且都是相同的
当我转到Report Navigator并查找未成功编译的每个文件时,我发现了一些奇怪的相关性:任何使用 NSString
的某些API的文件都无法编译 . 为了证明这个假设,我发现了一些编译成功的文件,并添加了以下代码行
let abc = NSString(string: "abc")
然后这个文件也停止编译 .
因此,对于某些文件,它表示使用 as NSString
转换 String
类对象无效,某处 NSAttributedString
/ NSString
创建失败,在其他一些地方调用 compare
或 rangeOfString
不正确等等 . 但是当我复制粘贴所有导致 Segmentation fault
错误的代码片段时我的新项目,他们成功编译
当然,仅在一天前,该项目使用Xcode 6编译得很好
我不知道从哪里开始以及如何解决这些问题,任何帮助都将非常有用
UPD
我上传了无法编译的项目到GitHub
2 回答
在项目的"MYHelpers.h/.m"中(可能来自https://github.com/AlexandrGraschenkov/MYHelpers)定义了一个带有一些实用方法的
NSString
类别:第二种方法
有一个空的选择器名称 . 在Objective-C中允许这样做,你可以调用方法
(我不知道该方法是否有意使用空选择器名称定义 - 我不推荐它 . )
但它会导致Swift编译器崩溃 . 只有在Swift代码中的某处引用
NSString
时才会发生这种情况 . (无论输入多么糟糕,编译器都不应该崩溃,因此我建议在Apple提交错误报告) .您可以将方法重命名为
(或者只是在项目中不需要它时将其删除),这应该可以解决问题 .
我的项目也遇到了同样的问题 .
My scenario: 找到下面的方案,我在其中发现了这个错误 . 我在我的快速项目中使用了我的Objective-C代码 . 2.基本上它是我在代码中使用的 category 类
UIImage
.Reason of this bug: 据我所知,编译器与某些代码混淆并且无法显示确切的原因 . 所以它抛出以下消息:
My solution: 我刚刚在我的类别类头文件中导入
#import <UIKit/UIKit.h>
,我的错误已立即解决 .Happy to help you!!