2016-07-03 2 views
8

Я запускаю Xcode 7.3.1. При создании моего проекта, основанного на Swift, он зависает на «Компиляция исходных файлов Swift». Я пробовал различную комбинацию удаления DerivedData, очистить, запустить, перезапустить Xcode, перезапустить OS X, ни один из них не работает. Есть идеи?Xcode зависает на «Компиляция исходных файлов Swift»

+0

При составлении любого проекта, или только конкретный один? – Carcigenicate

+0

Только один конкретный проект –

+0

Есть ли у вас какие-то рекурсивные определения, которые компилятор может не ловить? – Carcigenicate

ответ

6

Благодарим за предложения всех комментаторов. Я сузил его до закрытия map, ссылаясь на свойство, которое я удалил. Пример:

var people: [Person] = ... 
let foo = people.map { "\($0.name), \($0.age)" } 

где Person выглядит примерно так:

protocol Person { 
    var name: String { get } 
    var age: Int { get } 
} 

Это все работает отлично. Затем я удалил age, сохраняя закрытие без изменений. Это привело к тому, что Xcode стал безнадежно запутанным. Вероятно, связано с выводом типа Свифта.

+1

Вау, вот и все. Черт возьми, выведенные параметры $ 0. Это текущая реализация отстой! (без ввода типа ввода через инструменты (Xcode, Appcode и т. д .... и, по-видимому, даже компилятор) – Marchy

+1

Не совсем то же самое, но несколько связанное. Я просто потратил два часа на отслеживание подвешивающей компиляции, которая сводилась к map() внутри вызова print() (например, print ("что-то отображаемое: \ (something.map {$ 0.stuff})"). Crazy ... – mrwheet

+2

Вы можете прочитать по аналогичным причинам на http: // www. cocoawithlove.com/blog/2016/07/12/type-checker-issues.html –

5

Попробуйте очистить ваш проект сборки Папка

  1. Удерживайте нажатой клавишу вариант и получил продукт -> Очистить папку сборки (где Clean используется, чтобы быть в меню)
  2. Если вы используете CocoaPods удалить рабочую область файл и запуск Pod Install или Pod Update

Я думаю, что 2, вероятно, является причиной.

+1

1. 'Чистота' не находится под' Редактором', но под 'Продуктом' – kentrh

+0

Amended- thanks kentrh –

+1

СПАСИБО! Я действительно хочу, чтобы Apple добавила что-то подобное автоматически, как режим отладки dev, который запускает его перед каждой сборкой. Или просто исправьте все, что происходит в папке сборки. – Kirkland

2

В моем случае проблема была во время разбора JSON. Я отправлял необязательное значение в параметр словаря во время разбора JSON.

+0

Да, то же самое происходит со мной, что вы сделали для его решения? Пожалуйста, помогите как можно скорее! Большое спасибо. –

3

Измените «Быстрый уровень компилятора компилятора» в настройках сборки с «Оптимизация всего модуля» на «Оптимизация отдельных файлов». Возможно, это не ваша проблема, но она решила, что я застрял на полдня. Это может быть временная ошибка в последней версии Xcode (8.2.1 был тем, который я использовал в то время, когда я это написал).

12

Я сделал класс, расширяющий себя. Это также приводит к Swift компилятор застрять в цикле без ошибок:

class X: X 
+2

Точно моя проблема !!! Я хочу, чтобы компилятор Swift ловил это! –

0

Смотря отчет Навигатор помог мне найти проблему. В моем случае проблема заключалась в том, что я попытался добавить ограничения автоматической компоновки к программно добавленному представлению UITableView в UITableViewController.

0

В моем случае XCode заклинивание на большом словаре буквальных:

requestParameters = [ 
         "asset" : "...", 
         "user" : "...", 
         // about 15 additional keys 
         ] 

Проблема была зафиксирована после замены этой части путем:

var requestParameters = [String : Any]() 
requestParameters["asset"] = "..." 
requestParameters["user"] = "..." 
// about 15 additional keys 
2

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

json = [ "item1": value1 ?? "", 
     "item2": value2 ?? "", 
     "item3": value3 ?? "", 
     ... 
     "item14": value14 ?? "" ] 

Это не скомпилировалось.Когда я удалил все нисходящее объединение, чтобы оно выглядело следующим образом, оно скомпилировано в порядке.

json = [ "item1": value 1, 
     "item2": value 2, 
     "item3": value 3, 
     ... 
     "item14": value 14 ] 

Я не пытался определить точку отсечки для количества предметов, прежде чем она застряла.

0

в моем случае я изменил

bookingPassengers.append(["paxType": passengersData[passIndex].travellerKind ?? " " , 
              "firstName": passengersData[passIndex].firstName ?? " " ]) 

в

bookingPassengers.append(["paxType": passengersData[passIndex].travellerKind! , 
              "firstName": passengersData[passIndex].firstName! ]) 

После этого все стало хорошо

Смежные вопросы