it-swarm.com.ru

во время компиляции в Xcode произошел сбой swift с кодом выхода 1 - возможно, это связано с Bridging-Headers

У меня есть проект Obj-C, который я пытаюсь перенести в Swift. Я преуспел с различными классами, но недавно столкнулся с проблемой, в которой я не могу разобраться. Когда я пытаюсь скомпилировать мою текущую кодовую базу, я получаю следующее сообщение (СУПЕР НЕПРАВИЛЬНОЕ СООБЩЕНИЕ ОШИБКИ)

Команда /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc завершилась неудачно с кодом выхода 1

enter image description here

Мое единственное предположение - это как-то связано с моими мостовыми заголовками, но Xcode не дает мне достаточно информации, чтобы выяснить, действительно ли это так. 

Я использую Cocoapods, чтобы добавить CorePlot в мой проект. Я пытаюсь перенести следующий класс в Swift:

Класс Obj-C (ScatterPlotContainer.h)

#import <Foundation/Foundation.h>

@class CPTScatterPlot;

@interface ScatterPlotContainer : NSObject
@property (nonatomic, strong) CPTScatterPlot *ahrsAlt;
@property (nonatomic, strong) CPTScatterPlot *calibration;
@property (nonatomic, strong) CPTScatterPlot *coreAlt;
@property (nonatomic, strong) CPTScatterPlot *pitch;
@property (nonatomic, strong) CPTScatterPlot *roll;
@property (nonatomic, strong) CPTScatterPlot *slip;
@end

Класс Obj-c (ScatterPlotContainer.m)

#import <CorePlot/CPTScatterPlot.h>
#import "ScatterPlotContainer.h"


@implementation ScatterPlotContainer {

}
@end

Быстрое преобразование

import Foundation

 class ScatterPlotContainer : NSObject {
    public var ahrsAlt : CPTScatterPlot;
    public var calibration : CPTScatterPlot;
    public var coreAlt : CPTScatterPlot;
    public var pitch : CPTScatterPlot;
    public var roll : CPTScatterPlot;
    public var slip : CPTScatterPlot;
}

Мой файл заголовков моста

#import <CorePlot/CPTScatterPlot.h>

Что я пробовал до сих пор

Когда я закомментирую #import <CorePlot/CPTScatterPlot.h> из файла заголовков Bridging - я получаю ошибку в Swift, потому что он не знает, что такое CPTScatterPlot

Я также попробовал #import <CPTScatterPlot.h>, который тоже не работал. 

Мысли

Так что единственное, о чем я могу думать, это, возможно, потому что я использую какао-боб, и мне нужно добавить какое-то имя модуля. Сообщение об ошибке действительно не так полезно. У кого-нибудь есть предложение о какой-то явной ошибке, которую я сделал, или как получить более описательное сообщение об ошибке, чтобы выяснить, что происходит?

45
Jeef

Я сделал то же самое, что все говорят, но мой вопрос не был решен. Я понял, что проблема связана с неработающим вызовом функции.

Синтаксис функции не был неправильным, но его механизм вызова был неправильным.

Чтобы проверить точную ошибку для этой проблемы, проверьте следующее:

Выберите проблему навигатор> Нажмите на ошибку, чтобы показать журналы ошибок> В этом выберите вкладку Все сообщения.  

Это покажет все подробные журналы для этой ошибки.

enter image description here

Прокрутите вниз, и вы получите журналы, как, в моем случае

enter image description here

Итак, прочитав это, я понял, что что-то не так с вызовом функции. Я просмотрел свой код и решил его, ниже был правильный и неправильный код.

Неправильный путь:

var region = MKCoordinateRegionMake(self.mapView.userLocation.coordinate, span)
// It will not shown error here but when you build project compiler shows error.

Правильно:

let region = MKCoordinateRegion(center: self.mapView.userLocation.coordinate, span: span)
43
Kampai

Я столкнулся с этим прошлой ночью, и ничто из вышеперечисленного не решало мою проблему .... Я собирался сделать что-то очень плохое на своем ноутбуке, когда, по чистой случайности, увидел, что ONE (1) -файл - это кодировка текста, установленная в UTF -16?!?! WTF ?? 

enter image description here

Это был последний файл, над которым я работал, и, вероятно, одна неудачная вырезка/вставка «импортировала» странного персонажа на арену. Я сделал вырезку/вставку моего кода из этого файла в простой текстовый редактор. Я удалил файл, воссоздал его и вставил обратно свой код ... и вуаля! это работает. 

Так что сделайте выше, но также проверьте кодировку вашего файла! :-) 

7
Steve S.

У меня было то же сообщение об ошибке . Что помогло, так это установить уровень оптимизации в настройках компилятора Swift на None .. Это не совсем решение для меня, и я думаю, что это одна из многих ошибок в Swift компилятор.

4
heiko

Другим решением этой проблемы является проверка того, что у вас нет 2 или более файлов с одинаковыми именами. Это решило проблему для меня.

2
Fawkes

Спасибо @Kampai за совет по прохождению сообщения журнала ошибок. Я прочитал, и некоторые файлы отсутствовали: 

<unknown>:0: error: no such file or directory:  

Каким-то образом некоторые файлы были удалены во время извлечения из GitHub. Файлы находятся в каталоге, но не в проекте Xcode. 

Щелкните правой кнопкой мыши папку и нажмите «Добавить файлы в ...», чтобы вручную добавить отсутствующие файлы в Xcode. Это решило проблему для меня. 

Это случилось со мной уже несколько раз, но теперь я знаю, как это исправить\o / 

2
AVog

Простое удаление производных данных и очистка помогли мне

1
Andrey Chernukha

ужасно пережил эту ошибку более 3 часов, тщательно перебирая файл из файла и возвращая изменения и проверяя, есть ли проблема в этом файле. Я попробовал первый ответ, но не дал мне никаких ответов. Нашел проблему, и это потому, что у меня было не вычисленное свойство, названное так же, как вычисляемое свойство подкласса. Я действительно надеюсь, что отладчик станет более устойчивым к обработке подобных случаев в будущих обновлениях :( 

1
ImpactZero

Я получил ту же ошибку за включение этого кода в блок didSet:

didSet {
  // Test whether this view is currently visible to the user.
  if super.isViewLoaded() && (super.view.window != nil) {
    // (build fails even if this block is empty)
  }
}

Потребовалось много проб/ошибок, чтобы выследить это. Удаление super. позволило продолжить сборку.

1
macu

К сожалению, эта ошибка часто вызывается сбоем в компиляторе Swift. Не всегда легко найти причину. Если очистка не работает, я предлагаю попробовать прокомментировать последний код, который вы написали (даже весь файл, если необходимо). Обычно комментирование последнего введенного вами кода восстанавливает компиляцию, и вы получите более значимые ошибки. С этого момента вы должны пытаться раскомментировать код по частям, пока не дойдете до инструкции, которая вызвала эту ошибку. Компилятор Swift все еще довольно молод и время от времени сообщает о странных ошибках. Подобные ошибки совершенно бесполезны, потому что вместо того, чтобы помогать разработчикам, они только запутывают их еще больше. Я бы предложил Apple поменять компилятор, чтобы он давал более подробную информацию, чтобы эта досадная ошибка больше не появлялась.

0
Sergiob
NSString const *kGreenColor = @"#00C34E"; 

У меня была строка выше в моем файле Constant.h. который предназначался только для препроцессоров. Удаление этой строки работало на меня. 

0
user3693546

У меня была такая же ошибка, проблема была в том, что я переопределил метод с необязательным параметром и сделал параметр необязательным в переопределении. (параметр method ниже)

func logNetworkCallDurationForMethod(method:String, path:String, milliseconds: UInt) {

}

override func logNetworkCallDurationForMethod(method:String?, path:String, milliseconds: UInt) {

}
0
BTSmith

1) Определите файл там, где проблема. Вы можете скопировать и вставить инструкцию компиляции в консоль, и последний экран будет содержать описание ошибки. Запишите номер pid, там проблема была идентифицирована. Затем прокрутите вверх и найдите pid и связанную с ним инструкцию - для каждого pid будет один файл, поэтому вы найдете файл, с которым у вас проблемы.

2) Просмотрите файл и проверьте все последние изменения. Если у вас есть инициализация git, вы можете использовать

git diff <file name>
0
Alexander Volkov

В моем случае это был неправильный метод переопределения. Базовый класс:

open func send(_ onSuccess: @escaping ((SomeType) -> Void)) -> SomeType { }

Подкласс: 

open override func send(_ onSuccess: ((SomeType) -> Void)) -> SomeType { }

Как видите, @escaping отсутствует. Конвертер Swift3 в XCode8 не учитывает отношения наследования, более того, ошибки типа не помечаются как ошибки. 

0
Leo

Это произошло со мной, и после прочтения журнала проблем журнала я обнаружил, что у меня есть два файла Swift с одинаковым именем. Это создавало проблему, и мне не удалось собрать.

0
Umair Afzal

Я случайно перетащил символические ссылки (псевдонимы) на исходные файлы в проект вместо реальных файлов.

0
AlexD

Я получил эту ошибку из-за отсутствия файла в моем проекте. Добавил этот файл еще раз и вуаля все заработало.

0
sandy

Фактически столкнулся с этим вопросом сегодня. Был результатом недавнего извлечения git из проекта, где файл был удален, но он не обновился в моем локальном проекте.

 Path to missing file

Нажав на ошибку, можно найти местоположение «отсутствующего» файла, перейти и удалить его ссылку в Навигаторе проекта. Исправил ошибку, сделал чистку и успешно скомпилировал. 

0
Christopher Larsen

В моем случае я переименовал файл. После фиксации я обнаружил, что имя файла все еще не изменилось в проекте XCode (не знаю почему), файл был серым. Смена имени и повторная фиксация сделали свое дело.

Поэтому мы должны следить за этой ошибкой при внесении изменений в файлы с использованием системы контроля версий.

0
Vaibhav Singh

Это случилось со мной, когда я пытался ссылаться на метод из неизменяемого аргумента протокола (по ошибке я подумал, что элемент является свойством):

Имея интерфейс следующим образом:

public protocol NSValidatedUserInterfaceItem {
  func tag() -> Int
}

Сбой компиляции

func validateUserInterfaceItem(anItem: NSValidatedUserInterfaceItem) -> Bool {
    print(anItem.tag) // oopsie, tag is a function
    return false
}

Успешная компиляция

func validateUserInterfaceItem(anItem: NSValidatedUserInterfaceItem) -> Bool {
  print(anItem.tag()) // this is cool for Swift
  return false
}
0
bithavoc

Я дважды генерировал файлы CoreData (и добавил себя). Проверьте, не являются ли файлы дубликатами.

0
JSBach

Так как все остальные показывают свои, я покажу свои:

class Foo : UIView {
    var pathPosition:Double = 0.0 { didSet {
        pathPosition = min(max(0.0, pathPosition), 1.0) // crashes if this line is present
        self.pathPosition = min(max(0.0, pathPosition), 1.0) // but not here
        }}
}

Невероятно, но это не происходит в Playground, но происходит сбой при помещении в код в рамках. Хотя это допустимый синтаксис (используется для работы, все еще работает на игровой площадке), компилятор Swift, кажется, хочет, чтобы pathPosition было квалифицировано с self.. Обратите внимание, что это (относительно) старый код, используемый для компиляции, возможно, что-то сломалось в 6.1.

Правка:

Я чувствую, что схожу с ума, но мне кажется, что здесь возникает проблема большей сложности, когда окружающий код может повлиять на эту проблему. Я видел, как все компилировалось вчера вечером, сегодня снова изменил какой-то код и настройки, и мне снова это не удалось. Сегодня мне пришлось взломать кучу действительно глупых кодов, чтобы заставить его работать:

var pathPosition:Double = 0.0 { didSet {

    // bug: insane!! - have to clobber the value before resetting!
    let bugOldValue = pathPosition
    self.pathPosition = 1.0 // fails without this nonsensical line!
    self.pathPosition = min(max(0.0, bugOldValue), 1.0)
}}

Что бы это ни стоило, фактическое сообщение об ошибке, которое я получил согласно полезным инструкциям выше, было:

PHI node has multiple entries for the same basic block with different incoming values!
%14 = phi double [ 1.000000e+00, %10 ], [ %11, %10 ], [ 1.000000e+00, %9 ], [ 0.000000e+00, %9 ], !dbg !4818
label %10
double 1.000000e+00
%11 = phi double [ %7, %entry ], !dbg !4815
LLVM ERROR: Broken function found, compilation aborted!

Я боюсь на завтра.

0
Chris Conover

В моем случае это была ошибка симулятора: просто удалите приложение из симулятора и очистите проект, затем запустите проект.

0
MRizwan33

перемещение файла Bridge на уровень проекта решит мою проблему.

0
Nouman Ch

Что касается @Kampal, я все еще пытаюсь выяснить, сколько указать в вызове функции. Например, для создания объекта UIColor иногда требуется указать UIColor, а иногда нет. 

Они оба работают:

playButton.backgroundColor = .darkGrayColor()
playButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)

Это приводит к ошибке exit code 1 при компиляции без предупреждения отладчика. # Вихрь отладки времени

playButton.setTitleColor(.whiteColor(), forState: UIControlState.Normal)  

Итак, у меня есть новое правило: при использовании функции, которая принимает более одного параметра, будьте явными. 

Теперь вернемся к игре Swift: AVOID THE VORTEX

0
Suz