我刚下载了Xcode 6的GM版本,它不会编译出错:
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
有关如何解决此问题的任何想法?
答案 0 :(得分:70)
此错误可能由于多种原因而发生,因此这是一个调试提示。您可能希望尝试在命令行中使用xcodebuild
。它将为您提供有关哪些文件是罪魁祸首的详细信息。
要执行此操作,请打开终端并转到项目文件夹。在那里,输入
xcodebuild -project YourProject.xcodeproj -scheme YourScheme
或者如果你在工作区工作
xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme
您可能会看到弹出很多消息,但在输出的最后,您应该会看到导致崩溃的特定文件。回到XCode,进入这些文件并开始使用一些Swift语法来查看正在发生的事情。在我的情况下,它与setAttributeString函数有关,但我看到其他人有问题!和?
希望这会让你朝着正确的方向前进。
答案 1 :(得分:10)
我不得不改变我的"优化等级"无[-0none]
目标>构建设置> Swift编译器>优化级别。
答案 2 :(得分:7)
我的情况有点不同,它涉及枚举和选项。为简单起见,我们定义
enum Animal {
case Dog
case Cat
}
func exampleAction(animal: Animal) {}
exampleAction(.Cat)
它会运行正常。但是,只要我将参数设为可选,就会出现错误。所以这段代码不起作用:
func exampleAction(animal: Animal?) {}
exampleAction(.Cat)
为了使其工作,我必须在方法调用中添加显式枚举名称。所以下面的代码再次起作用:
exampleAction(Animal.Cat)
答案 3 :(得分:3)
我认为它出现的原因有很多,我遇到过这种情况,希望它可以帮助你。
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
答案 4 :(得分:2)
可能是同一个问题 Swift compile error in XCode 6 GM
我有同样的问题,然后我使用git checkout旧版本来查找导致问题的提交,并尝试找到关键问题代码。我的关键问题代码是这样的
func afunc() {
class AClass() {
}
let ac = AClass()
//....
}
其他代码可能会出现同样的问题,发生在Swift Optimization中,swift编译器不会告诉您确切的位置。这一定是Apple的错误。
答案 5 :(得分:2)
在我的情况下,我改变了3个地方:
目标>构建设置> Swift编译器>
当我改变调试时,我有像“Source Kit崩溃......”这样的错误。 这个参数组合对我来说非常有用!
答案 6 :(得分:2)
我看到很多原因。我的答案不是通用的解决方案,只是添加了另一个提供该错误的案例。在我的例子中,它设置了一个按钮的标题:
inputs = [x1 x2 x3 x4]; % Put your inputs in a vector
fixed = ~(inputs == 0); % Logical vector for where inputs is not zero
select = ismember(combs(:,fixed),inputs(fixed),'rows') % find where the values correspond
yourMatrix = combs(select,:); % Get your results
而不是:
button!.setTitleColor(.whiteColor(), forState: UIControlState.Normal)
答案 7 :(得分:2)
由于编译器的优化,很多人都有这个问题(包括我)。我不会考虑关闭优化的正确解决方案 - 我希望我的代码能够尽可能快地运行。
手动重新运行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
有优化标志。
我在项目目录中重新运行了整个命令(根据上面的xcodebuild建议),在所有细节中我发现了以下错误:
{
"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 - ;文件名"到最后。
然后我必须在文件中找到pid(10682)以查看它正在编译的内容。我手动运行该pid的命令,它给了我特定文件的错误。然后它归结为修复代码。
答案 8 :(得分:2)
如果您使用的是一些应该在iOS早期版本中使用的API,则可能会导致构建失败。 例如:如果您使用UI_USER_INTERFACE_IDIOM()而不是UIDevice.currentDevice()。userInterfaceIdiom来识别设备类型,则会在没有提示的情况下获得此构建错误。
答案 9 :(得分:1)
在我的情况下,此错误是由不正确的(UTF8).swift文件编码引起的; 通过将文件的内容复制粘贴到新文件中来解决。
答案 10 :(得分:0)
只是把它放在那里:每当我将[unowned self]
放在块中的块中时,我都会收到此错误,如下所示:
lazy var someVar: SomeType = {
self.successBlock = {[unowned self] in
// ...
}
}()
解决方案是将[unowned self]
仅放在最顶层的块上。对于块内的块,似乎对self的无主参考是自动处理的。
当然,我只能通过@ Maxwell的回答找出麻烦的文件才能找到这个错误:https://stackoverflow.com/a/26848000/855680
答案 11 :(得分:0)
我也遇到了这个错误。我按照@Maxwell的建议在终端运行了命令,发现错误发生在我的GameViewController.swift文件中。稍微挖掘一下,发现它不喜欢某些自动生成的代码或代码与Xcode中的某个设置冲突
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .AllButUpsideDown
} else {
return .All
}
}
一旦删除此块,错误就会消失。
答案 12 :(得分:0)
在我的情况下,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 {
}
祝你好运!
答案 13 :(得分:0)
在Xcode 6.4中编译此Swift 2.0语法时遇到此错误:
print(string, appendNewline: true);
返回Xcode 7,错误消失。
答案 14 :(得分:0)
Maxwell的解决方案为您提供了最接近的提示。
答案 15 :(得分:0)
按照@ maxvel的建议,我知道了 max()和min()函数无法在发布模式下编译。我用我自己的函数替换它,如下所示。
//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
}
}
答案 16 :(得分:0)
在这里添加我的案例。每当我用[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.")
})
答案 17 :(得分:0)
更改
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
要
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
并对此类其他人做同样的事情
答案 18 :(得分:0)
我有以下代码显示Release中的构建错误。
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)。在调试中构建正常。提交给Apple Bug Reporter的门票。
答案 19 :(得分:0)
转到文件夹:Users / user / Library / Developer / Xcode / DerivedData
并清除所有文件,
然后清理并分析,
这对我有用。
答案 20 :(得分:-2)
我认为真正的问题是错误太多,所以编译只会告诉你一个混乱的错误代码。
但您可以随时打开每个源代码文件,在那里您可以找到详细的错误信息和正确的建议。
祝你好运!