Я только что загрузил выпуск GM Xcode 6 и не скомпилирует эту ошибку:
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
Любые идеи о том, как исправить это?
Я только что загрузил выпуск GM Xcode 6 и не скомпилирует эту ошибку:
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
Любые идеи о том, как исправить это?
Эта ошибка может произойти по многим причинам, поэтому это означает, что это подсказка для отладки. Вы можете попробовать использовать xcodebuild
в командной строке. Он даст вам подробную информацию о том, какие файлы являются виновниками.
Для этого откройте "Терминал" и перейдите в папку проекта. После этого введите
xcodebuild -project YourProject.xcodeproj -scheme YourScheme
или если вы работаете в рабочей области
xcodebuild -workspace YourProject.xcworkspace -scheme YourScheme
Вы можете видеть, что появляется много сообщений, но в самом конце вывода вы должны увидеть конкретные файлы, которые вызывают сбои. Вернитесь в XCode, зайдите в эти файлы и начните играть с синтаксисом Swift, чтобы узнать, что происходит. В моем случае это связано с функцией setAttributeString, но я видел, что другие люди имеют проблемы с! а также?.
Надеюсь, это поможет вам двигаться в правильном направлении.
Мне пришлось изменить свой "уровень оптимизации" на "Нет" [-0none]
Цель > Параметры сборки > Быстрый компилятоp > Уровень оптимизации.
Мой случай был немного другим, и он включает перечисления и дополнительные опции. Для простоты можно определить
enum Animal {
case Dog
case Cat
}
func exampleAction(animal: Animal) {}
exampleAction(.Cat)
Он будет работать нормально. Однако, как только я сделал аргумент опционным, ошибка начала появляться. Поэтому этот код не будет работать:
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
}
}
В верхнем коде просто удалите "[слабый я]", называемый списком захвата, удалит ошибку компилятора. Это работает для меня.
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
У меня была такая же проблема, затем я использую git checkout старые версии, чтобы найти, какое из них вызывает проблему, и попытайтесь найти код проблемы с ключом. Мой ключевой код проблемы - это что-то вроде этого
func afunc() {
class AClass() {
}
let ac = AClass()
//....
}
Другой код может сделать ту же проблему, что и в Swift Optimization, а быстрый компилятор не сообщает вам точное местоположение. Это должно быть ошибкой Apple.
В моем случае я изменил 3 места:
Цель > Настройки сборки > Быстрый компилятоp >
Когда я изменил только Debug, у меня есть ошибки, такие как "Исходный комплект разбился..." Эта комбинация параметров, работает очень хорошо для меня!
Если вы используете какой-то API, который должен использоваться в ранней версии iOS, вы можете получить сбои сборки. Например: Если вы используете UI_USER_INTERFACE_IDIOM() вместо UIDevice.currentDevice(). UserInterfaceIdiom, чтобы идентифицировать тип устройства, вы получите эту ошибку сборки без подсказки.
У многих людей есть эта проблема (включая меня) из-за оптимизации в компиляторе. Я не считаю, что отключить оптимизацию правильного разрешения - я хочу, чтобы мой код был оптимизирован для работы как можно быстрее.
перезапуск 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 > filename" в конец.
Затем мне пришлось найти pid (10682) в файле, чтобы посмотреть, что он компилирует. Я запустил команду для этого pid вручную и дал мне ошибку для конкретного файла. Тогда это сводится к исправлению кода.
Я вижу много причин. Мой ответ не является общим решением, а просто добавляет еще один случай, который обеспечивает эту ошибку. В моем случае он установил заголовок кнопки следующим образом:
button!.setTitleColor(.whiteColor(), forState: UIControlState.Normal)
вместо этого:
button!.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
В моем случае эта ошибка была вызвана неправильной кодировкой файла (UTF8).swift; Решено путем копирования вставки содержимого файла в новый файл.
изменить
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
К
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
и делать то же самое с другими, как это
Перейдите в папку: Пользователи/пользователь/Library/Разработчик/Xcode/DerivedDatap >
и очистить весь файл,
затем очистите и проанализируйте,
Это работа для меня.
У меня есть следующий код, показывающий ошибку сборки в Release.
if myValue > 5 { myValue = 5.0 }
if myValue < 0 { myValue = 0 }
Добавление else
между операторами if исправлено:
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.
Просто чтобы выразить это: я получаю эту ошибку всякий раз, когда я помещаю [unowned self]
в блок внутри блока, например:
lazy var someVar: SomeType = {
self.successBlock = {[unowned self] in
// ...
}
}()
Решение состоит в том, чтобы поместить [unowned self]
только в блок верхнего уровня. Кажется, что некорректная ссылка на self обрабатывается автоматически для блоков внутри блоков.
Конечно, я смог найти эту ошибку, сначала выяснив неприятный файл с помощью ответа @Maxwell: fooobar.com/questions/89150/...
Чтобы добавить мой случай здесь. Я получил описанную ошибку всякий раз, когда я отмечаю закрытие [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, я узнал, что Функции 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
}
}
Решение Максвелла дает вам самый близкий намек.
Обнаружение этой ошибки при компиляции синтаксиса Swift 2.0 в Xcode 6.4:
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 {
}
Удачи!
Я тоже получал эту ошибку. Я запустил команду в Terminal, как было предложено @Maxwell, и выяснил, что ошибка была в моем файле GameViewController.swift. Немного копаясь и обнаружив, что ему не понравился какой-то автоматически сгенерированный код, или код противоречил настройке в Xcode где-то
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return .AllButUpsideDown
} else {
return .All
}
}
Как только я удалил этот блок, ошибка исчезла.
Я думаю, что реальной проблемой является слишком много ошибок, поэтому компиляция сообщает вам только путаный код ошибки.
Но вы всегда можете открыть каждый файл исходного кода, там вы найдете подробную информацию об ошибках и правильные советы.
Удачи!