GM发布的Xcode 6编译

我刚刚下载了Xcode 6的GM版本,它不会编译这个错误:

Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1 

有想法该怎么解决这个吗?

这个错误可能会有很多原因,所以这是一个debugging提示。 你可能想尝试在命令行中使用xcodebuild 。 它会给你详细的什么文件是罪魁祸首。

为此,打开terminal并转到您的项目文件夹。 一旦那里,input

 xcodebuild -project YourProject.xcodeproj -scheme YourScheme 

或者如果你在一个工作区工作

 xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme 

您可能会看到很多消息popup,但在输出的最后,您应该看到导致崩溃的特定文件。 回到XCode,进入这些文件,并开始使用一些Swift语法来看看发生了什么。 在我的情况下,它必须与setAttributeString函数,但我见过其他人有问题! 和?

希望这会让你朝着正确的方向前进。

我不得不将我的“优化级别”更改为无[-0none]

目标>构build设置> Swift编译器>优化级别。

我的情况有点不同,它涉及枚举和选项。 为了简单让我们定义

 enum Animal { case Dog case Cat } func exampleAction(animal: Animal) {} exampleAction(.Cat) 

它会运行OK。 但是,只要我使参数可选,错误开始出现。 所以这段代码将不起作用:

 func exampleAction(animal: Animal?) {} exampleAction(.Cat) 

为了使它工作,我不得不在方法调用中添加显式的枚举名称。 所以下面的代码再次工作:

 exampleAction(Animal.Cat) 

我认为这是出于很多原因,我遇到的是这种情况,希望它可以帮助你。

 dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in // ... dispatch_async(dispatch_get_main_queue()) { [weak self] in // ... return } } 

在上面的代码中,只需删除“[weak self]”,即捕获列表将清除编译器错误。 这个对我有用。

 dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) ){ [weak self] in // ... dispatch_async(dispatch_get_main_queue()) { // ... return } } 

xCode版本是6.1.1

可能是同样的问题在XCode 6 GM的Swift编译错误

我有同样的问题,然后我使用git checkout旧版本来查找哪个提交导致问题,并尝试find关键的问题代码。 我的关键问题代码是这样的

 func afunc() { class AClass() { } let ac = AClass() //.... } 

其他代码可能会出现同样的问题,发生在Swift优化中,而swift编译器不会告诉你确切的位置。 这肯定是Apple的一个bug。

在我的情况下,我改变了3个地方:

目标>构build设置> Swift编译器>

  • 优化级别。
    • debugging:无[-Onone]
    • 分布:最快[-O]
    • 发布:最快[-O]

当我改变只是debugging,我有错误,如“源工具包崩溃….”这个参数的组合,对我来说非常好!

如果您正在使用某些应在早期iOS版本中使用的API,则可能会造成构build失败。 例如:如果您使用的是UI_USER_INTERFACE_IDIOM()而不是UIDevice.currentDevice()。userInterfaceIdiom来识别设备types,那么您将得到此构build错误而不提示。

由于编译器的优化,很多人都有这个问题(包括我在内)。 我不考虑closures优化一个正确的决议 – 我希望我的代码优化运行尽可能快。

手动重新运行xcodebuild没有任何好处,因为它没有优化运行它。

但是 – 错误屏幕给了我失败的swiftc命令:

 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -target arm64-apple-ios8.0 -incremental -module-name SpaceCats -O -sdk /Applic... 

-O有优化标志。

我在项目目录中重新运行了这个命令(按照上面的xcodebuildbuild议),并在所有的细节中find了下面的错误:

 { "kind": "finished", "name": "compile", "pid": 10682, "output": "Bitcast requires both operands to be pointer or neither\n %228 = bitcast i8* %227 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n %324 = bitcast i8* %323 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n %411 = bitcast i8* %410 to %VSs20UnsafeMutablePointer, !dbg !1322\nBitcast requires both operands to be pointer or neither\n %498 = bitcast i8* %497 to %VSs20UnsafeMutablePointer, !dbg !1322\nLLVM ERROR: Broken function found, compilation aborted!\n", "exit-status": 1 } 

如果你想要它到一个文件,而不是屏幕,添加“2>文件名”的结尾。

然后我不得不在文件中findpid(10682)来查看它正在编译的内容。 我手动运行了该命令的pid,它给了我特定文件的错误。 然后是修复代码。

我看到很多原因。 我的答案是不是一个通用的解决scheme,但只是增加了另一个案件,提供了这个错误。 在我的情况下,它是这样设置button的标题:

 button!.setTitleColor(.whiteColor(), forState: UIControlState.Normal) 

而不是这个:

 button!.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal) 

在我的情况下,这个错误是由不正确的(UTF8).swift文件编码引起的; 通过将文件内容复制粘贴到一个新文件来解决。

转到文件夹:用户/用户/图书馆/开发/ Xcode / DerivedData

并清除所有文件,

然后再清理和分析,

这对我有用。

我有以下代码显示版本中的生成错误。

 if myValue > 5 { myValue = 5.0 } if myValue < 0 { myValue = 0 } 

在if语句之间添加else解决了问题:

 if myValue > 5 { myValue = 5.0 } else if myValue < 0 { myValue = 0 } 

演示: https : //github.com/exchangegroup/build-error-demo

Xcode版本6.1(6A1052d)。 在debugging中构build好。 提交给Apple Bug Reporter的票。

只要把它放在那里:每当我把[unowned self]放在一个块内的一个块里,我就会得到这个错误,就像这样:

 lazy var someVar: SomeType = { self.successBlock = {[unowned self] in // ... } }() 

解决的办法是把[unowned self]只放在最顶层的块。 似乎对self的无主引用是自动处理块内的块。

当然,我只能通过@ Maxwell的回答find这个麻烦的文件才能find这个错误: https : //stackoverflow.com/a/26848000/855680

在这里添加我的案例。 当我用[unowned self]标记闭包时,我得到了描述的错误,但是从来没有在闭包本身中引用self。

例如:

  request.startWithSuccess({ [unowned self] (req: CBRequest!, object: AnyObject!) -> Void in if let result = object["result"] as? [NSObject: AnyObject] { popup.type = result["email"] == nil ? AuthPopupType.Signup : AuthPopupType.Login } else { println("WARNING: Malformed response for kCBCheckUniquenesPath request.") } }, failure: { (req: CBRequest!, err: NSError!) -> Void in println("ERROR: Failure response for kCBCheckUniquenesPath request.") }) 

按照@ maxvel的build议,我知道max()和min()函数在发布模式下编译失败。 我用下面的自己的函数replace它。

 //Swift compiler seems to failing to compile default min and max functions in release //mode hence writing my own // func maximum<T: Comparable> (one: T, other: T) -> T { if one > other { return one } else { return other } } func minimum<T: Comparable> (one: T, other: T) -> T { if one < other { return one } else { return other } } 

更改

 func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! 

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

并像这样对其他人做同样的事情

麦克斯韦的解决scheme为您提供最接近的提示。

在Xcode 6.4中编译这个Swift 2.0语法时遇到这个错误:

print(string, appendNewline: true);

回到Xcode 7,错误消失了。

在我的情况下,Xcode提供了错误,因为以下行:

 if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Phone { }else { } 

并解决我定义这个错误:

 enum UIUserInterfaceIdiom : Int { case Unspecified case Phone // iPhone and iPod touch style UI case Pad // iPad style UI } 

然后我用它像:

  if UIDevice.currentDevice().userInterfaceIdiom == .Phone { } 

祝你好运 !

我也得到这个错误。 我按照@Maxwell的build议运行terminal命令,发现错误在我的GameViewController.swift文件中。 有点挖,发现它不喜欢一些自动生成的代码或代码与Xcode中的某个设置冲突

 override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { if UIDevice.currentDevice().userInterfaceIdiom == .Phone { return .AllButUpsideDown } else { return .All } } 

只要我删除这个块,错误就消失了。

我认为真正的问题是错误太多,所以编译告诉你只有一个困惑的错误代码。

但是你可以随时打开每个源代码文件,在那里你可以find详细的错误信息和正确的build议。

祝你好运!