Swift 由于信号:分段故障:11 | Xcode 7.2,命令失败

Swift 由于信号:分段故障:11 | Xcode 7.2,命令失败,swift,compiler-errors,swift2,xcode7,Swift,Compiler Errors,Swift2,Xcode7,我被要求将一个相当大的应用程序迁移到Swift 2。编译器不断抛出分段错误:一个函数有11个错误,出现在应用程序逻辑的不同模块中(唯一的区别是使用了变量): func loadMoreContent(){ 如果let collection=self.ratings集合,其中collection.identifier!=0, 让totalEntries=collection.totalEntries, 让objects=self.ratings?.count其中objects

我被要求将一个相当大的应用程序迁移到Swift 2。编译器不断抛出分段错误:一个函数有11个错误,出现在应用程序逻辑的不同模块中(唯一的区别是使用了变量):

func loadMoreContent(){
如果let collection=self.ratings集合,其中collection.identifier!=0,
让totalEntries=collection.totalEntries,
让objects=self.ratings?.count其中objects
以下是错误本身:

1.  While type-checking 'loadMoreContent' at (path redacted).swift:46:3
2.  While type-checking expression at [(path redacted).swift:54:9 - line:64:9] 
    RangeText="collection.nextPage().onSuccess { (value) in

              if let collection = value as? Collection<Rating> {
                self.ratingsCollection = collection
              } else {
                self.ratingsCollection = Collection<Rating>(identifier: 0)
              }

              }.onFailure { error in
                self.ratingsCollection = Collection<Rating>(identifier: 0)
            }"

3.  While loading members for declaration 0x7fdda42ea2b0 at <invalid loc>
4.  While deserializing 'producer' (FuncDecl #340) 
1。在(路径已编辑)处进行“loadMoreContent”类型检查时。swift:46:3
2.而类型检查表达式位于[(路径编辑).swift:54:9-行:64:9]
RangeText=“collection.nextPage().onSuccess{(值)在
如果let collection=value as?collection{
self.ratingscolection=集合
}否则{
self.ratingsCollection=集合(标识符:0)
}
}.onFailure{中的错误
self.ratingsCollection=集合(标识符:0)
}"
3.在加载声明0x7fdda42ea2b0的成员时
4.反序列化“生产者”(fundecl#340)时

有人知道这个函数乍一看会有什么问题吗?我应该补充一点,它在Xcode 6/Swift 1.2中编译时没有任何更改。

这是一个拉毛错误,在Xcode 7中尤其常见

偶尔,通常的XCode愚蠢的bug协议(clean、XCode重启、clean、build)会修复它。然而,这通常是由于一行或多行代码引起的。这也不一定意味着代码中有bug

因此,在重新启动之前,有时按顺序撤消最近的更改并在继续进行时尝试构建是很有用的。如果自上次成功构建以来,您的任何依赖项或框架都已更新,那么这些可能是一个候选项

有几件事似乎经常产生这种错误。因此,如果您能够找出持续导致错误的特定问题,请简要地添加到此列表:

1) 在调用使用自动关闭的方法(在调用XCGLogger中找到)时使用加号运算符进行字符串连接:

2) 无法从子类调用super.init(),特别是当super类使用默认初始值设定项时(您尚未显式创建自己的init)


3) 意外地使用一个等号来测试相等性(使用=而不是==),特别是在复杂语句中,例如在

中,您可以确定loadMoreContent中的哪一行是导致故障的原因吗?也许可以从注释所有内容开始,然后一行一行地添加每一行。我的猜测是,这和“as”有关?收集'演员。我想了解更多关于您正在使用的集合类的信息会有所帮助。奇怪的是,在我更新了ReactiveCocoa之后,错误消失了,它甚至没有在集合类或函数本身中使用。。。我想,在没有移交的情况下接管一个废弃项目的乐趣。非常感谢您的输入@nwales
1.  While type-checking 'loadMoreContent' at (path redacted).swift:46:3
2.  While type-checking expression at [(path redacted).swift:54:9 - line:64:9] 
    RangeText="collection.nextPage().onSuccess { (value) in

              if let collection = value as? Collection<Rating> {
                self.ratingsCollection = collection
              } else {
                self.ratingsCollection = Collection<Rating>(identifier: 0)
              }

              }.onFailure { error in
                self.ratingsCollection = Collection<Rating>(identifier: 0)
            }"

3.  While loading members for declaration 0x7fdda42ea2b0 at <invalid loc>
4.  While deserializing 'producer' (FuncDecl #340) 
 public func myFunc(@autoclosure closure: () -> String?){
      // do something
 }

 someInstance.myFunc("Hi " + nameStr + "!")