我有一个完成的项目,大约30vcs,Firebase,Googlemaps集成等 - 这是一个非常复杂的项目,它是一个基于地理定位的游戏,我终于在几个月的工作后完成了。
工作和编译得很好,直到我尝试在新的Swift 3.1 / Xcode 8.3中编译它。
在几行上更改推荐语法以清除新的XCODE 8.3错误后,编译失败并显示“Abort Trap:6”错误。
这是调试器的最后几行(在此之前还有大约100行不可理解的文件名/数字等)。
0 swift 0x00000001089f1eb7 PrintStackTraceSignalHandler(void *)+ 39 1 swift
0x00000001089f1366 SignalHandler(int)+ 646 2 libsystem_platform.dylib 0x00007fffc602eb3a _sigtramp + 26 3 libsystem_platform.dylib 0x0000000100000001 _sigtramp + 972887265 4 libsystem_c.dylib 0x00007fffc5eb3420 abort + 129 5 swift
0x0000000106454644 SWIFT :: ModuleFile :: getDecl(LLVM :: PointerEmbeddedInt, llvm ::可选)+ 38404 6 swift
0x00000001064564fa SWIFT :: ModuleFile ::的getType(LLVM :: PointerEmbeddedInt) + 2106 7 swift 0x000000010644f373 swift :: ModuleFile :: getDecl(llvm :: PointerEmbeddedInt, llvm ::可选)+ 17203 8 swift
0x0000000106459f24 swift :: ModuleFile :: maybeReadPattern(swift :: DeclContext *)+ 740 9 swift 0x000000010644f605 SWIFT :: ModuleFile :: getDecl(LLVM :: PointerEmbeddedInt, llvm ::可选)+ 17861 10 swift
0x00000001064607c8 swift :: ModuleFile :: loadAllMembers(swift :: Decl *, unsigned long long)+ 600 11 swift
0x0000000106840f0d swift :: NominalTypeDecl :: getMembers()const + 125 12 swift 0x0000000106828c75(匿名 namespace):: Traversal :: visitNominalTypeDecl(swift :: NominalTypeDecl *)+ 869 13 swift 0x0000000106826645(匿名 namespace):: Traversal :: doIt(swift :: Decl *)+ 277 14 swift
0x000000010619a75f SWIFT :: SILPassManager :: SILPassManager(SWIFT :: SILModule * llvm :: StringRef)+ 1471 15 swift 0x00000001061a135f swift :: runSILDiagnosticPasses(swift :: SILModule&)+ 159 16 swift
0x0000000105811282 swift :: performFrontend(llvm :: ArrayRef, char const *,void *,swift :: FrontendObserver *)+ 42866 17 swift
0x00000001057c088c main + 9052 18 libdyld.dylib
0x00007fffc5e1f235 start + 1堆栈转储:
(这里有大约150行难以理解的调试数据/文件/字母数字 - 最后是这个):
- 在模块'googleMapsPractice'中加载'homePage'的成员
醇>
- 在'googleMapsPractice'中反序列化PatternBindingDecl#295
- 在'googleMapsPractice'中反序列化'gameDBRef'(VarDecl#296)
- 在'googleMapsPractice'中反序列化#1009(XREF)时,
- 交叉引用模块'FirebaseDatabase'... FIRDatabaseReference
我真的被卡住,因为我不知道在哪里调试这个。
非常感谢任何帮助
答案 0 :(得分:2)
这件事发生在我身上,因为我在主要private enum
和class
中都有extension
。这两个都在同一个文件中。整蛊一个!
答案 1 :(得分:1)
就我而言,似乎是由于本地项目计划缺少,我的应用程序中的构建阶段试图链接到项目。
答案 2 :(得分:1)
我遇到了同样的问题。我终于发现它是由于压倒性的描述而引起的。在任何继承自NSObject的类上。我注意到在Swift 3.1中有一个'类功能描述()'在NSObject上我不一定记得在Swift 3.0中(尽管我很容易在这个假设中弄错;我从来没有任何寻找或使用它)。另请参阅https://forums.developer.apple.com/thread/75700
答案 3 :(得分:1)
我遇到了错误,因为我的班级名称不同于文件名。修改了文件名,一切正常,然后
答案 4 :(得分:1)
在我的情况下是因为我放了一个!对象的init方法中的符号。像这样:
init(obj1: Object1, obj2: Object2!) {
}
删除!函数参数,没有错误。
答案 5 :(得分:0)
我对Swift类有类似的问题,这些类具有来自React的RCTRootView
类型的属性。我通过将属性设为私有来修复它,如下所示:
class MyViewController: UIViewController {
var rctView: RCTRootView()
}
变成这样:
class MyViewController: UIViewController {
private var rctView: RCTRootView()
}
似乎错误在于尝试在编译时过早反序列化来自其他模块/框架的类(在您的情况下为FirebaseDatabase
,在我的情况下为React
)。将这个属性设为私有可以使编译器在以后的编译中不需要这样做。如果我不得不猜测,看来我们正在彻底解决一些依赖/构建订单问题。
答案 6 :(得分:0)
我通过在模拟器中切换到其他设备来解决此问题-然后编译并运行正常。
然后,当我回到以前的设备时,它也可以正常工作。
我没有解释!