it-swarm.com.ru

Swift 3 / Xcode 8 Upgrade - сотни файлов DerivedData отсутствуют из-за ошибок рабочей копии

Я только что обновил до последней бета-версии XCode и Swift, но после использования конвертера в моем проекте приложения появилось более 200 желтых ошибок во время сборки со всеми утверждениями/"projectDirectoy"/DerivedData/XXXXXXXXX/XXXX/XXX/xXXX/xXX отсутствует в рабочей копии ... где XXXXX представляют различные пути к файлам в папке DerivedData.

Я попытался удалить папку DerivedData из местоположения, указанного в ошибках.

Я попытался удалить все в папке DerivedData в ~/Library /.

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

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

Эти ошибки просто не исчезнут.

Любые идеи?

42
Krivvenz

Я столкнулся с теми же предупреждениями после обновления до xCode 8 GM, более 350. Большинство из них находились в файлах и изображениях .Swift в каталоге ресурсов.

По сути, это проблема управления исходным кодом, которая в основном возникает при перемещении/удалении файлов проекта. Это либо новые предупреждения, либо xCode 8 намного более строг с контролем исходного кода, чем xCode 7.

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

Вот что сработало для всех моих проектов.

Короткий путь

Попробуйте сначала, и если это не сработает, чем проделать долгий путь

1) Перейдите в меню "Управление исходным кодом" (верхнее меню рядом с окном и справкой) и нажмите "Обновить состояние".

2) Снова перейдите в меню Source Control и нажмите кнопку commit

3) Окно коммитов должно открываться со всеми коммитами, которые xCode считает необходимыми. Так что просто введите фиксацию в поле текстового поля и нажмите кнопку фиксации.

Повторяйте шаги 1-3, пока xCode не откроет больше элементов, выбранных при открытии меню фиксации. Не переходите к шагу 4, пока все элементы, автоматически выбранные xCode, не будут зафиксированы, в противном случае вы можете получить ошибку при выполнении шага 4.

4) Снова откройте окно фиксации, и, как упоминалось в шаге 3, xCode больше не должен выбирать элементы. Тем не менее, вы все равно должны увидеть некоторые элементы в левой боковой панели, которые вызывают предупреждения.

Щелкните правой кнопкой мыши на элементе и нажмите "Выбрать все", введите фиксацию в текстовом поле и нажмите кнопку фиксации. Все должно завершиться и предупреждение/ошибки должны исчезнуть (при необходимости нажмите CommitMenu-> Обновить состояние снова).

Если он не завершен, то закройте/снова откройте xCode и повторите шаги 1-4.

Если это также не работает, то долгий путь должен это исправить.

Долгий путь

Если вы используете систему контроля версий и регулярно делаете коммиты, то при желании выполните шаг 1, и тогда вы сможете сразу перейти к шагу 11.

1) Очистить данные, полученные из xCode (опционально)

Обычно вам не нужно этого делать, поэтому пропустите этот шаг с первой попытки и перейдите к шагу 3.

Перейдите в настройки xCode, перейдите на вкладку "местоположения" и перейдите в раздел "Дополнительно". Нажмите на маленькую стрелку рядом с кнопкой продвижения, чтобы открыть путь к производной папке. Полностью закройте xCode и затем удалите все содержимое этой папки.

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

"Я также должен был изменить свой параметр DerivedData относительно относительного к Пользовательскому, который может быть найден в Xcode> Предпочтения> Вкладка Местоположений."

2) Перезапустите проект xCode и дождитесь окончания индексации. Это может занять несколько минут, потому что вы просто удалили производные данные.

3) Перейдите в меню "Управление исходным кодом" (верхнее меню рядом с окном и справкой) и нажмите "Обновить состояние".

4) Снова перейдите в меню "Контроль исходного кода" и нажмите "Подтвердить".

5) Окно коммитов должно открываться со всеми коммитами, которые xCode считает необходимыми. У меня было более 250, так как я никогда не использовал систему контроля версий.

6) Нажмите на изменения фиксации в правом нижнем углу

7) Я получил ошибку, и операция не завершилась (если она работает для вас, чем перейти к 11)

8) Перейдите в меню "Контроль версий" и нажмите "Обновить статус".

9) Перейдите в Source Control и нажмите кнопку commit

10) Нажмите на изменения фиксации в правом нижнем углу. На этот раз он предложил около 30 коммитов меньше, и я не получил ошибок. Если вы по-прежнему получаете ошибки при второй попытке, попробуйте полностью закрыть Xcode, а затем снова открыть его, а затем повторите этот шаг.

11) Перейдите в меню "Контроль версий" и нажмите "Обновить статус"

12) Перейдите в меню управления исходным кодом и нажмите кнопку фиксации

13) На этот раз xCode не должен рекомендовать никаких изменений, но вы все равно увидите много файлов в меню фиксации слева (не отмечены). Это те файлы, которые выдают предупреждения рабочей копии, которые также должны быть там.

14) Выберите каждый из этих файлов в левой боковой панели меню фиксации. Вы можете щелкнуть правой кнопкой мыши и нажать проверить все

15) Нажмите на изменения фиксации в правом нижнем углу

16) Я получил ошибку, и операция не завершилась. Итак, я попробовал еще раз и повторил ту же ошибку, поэтому закрыл меню коммита. Если это завершится для вас, это тоже хорошо.

17) Перейдите в меню "Контроль версий" и нажмите "Обновить статус"

Бум все предупреждения исчезли.

18) Закройте свой проект и xCode полностью

19) Снова откройте проект

20) Перейдите в меню "Контроль версий" и нажмите "Обновить статус".

21) Перейдите в меню "Контроль версий" и нажмите "Подтвердить"

22) Мне вдруг снова предложили 150+ коммитов. Убедитесь, что все предложения выбраны, а затем нажмите на коммит, и он должен завершиться без ошибок.

23) Очистите ваш проект (Product-> Clean)

24) Перейдите в меню "Контроль версий" и нажмите "Подтвердить". Не должно быть никаких изменений, и не должно быть никаких файлов в левой боковой панели.

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

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

Надеюсь это поможет.

94
crashoverride777

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

13
n13

У меня была папка .git в родительской папке, которая ни к чему не "

в меню "Контроль версий" убедитесь, что все ваши "Рабочие копии" действительно подключены к реальной папке управления источниками

[~ # ~] ни одно [~ # ~] из этих "решений" не сработало для меня, кроме этого удаление неконтролируемой папки .git

4
Roy Lovejoy

Удаление DerivedData и GIT добавить. из терминала, даже без коммитов, решил эту проблему для меня.

3
nemissm

Просто покажите все скрытые файлы, а затем удалите папку git Откройте терминал и запустите эту команду, чтобы показать все скрытые файлы "по умолчанию напишите com.Apple.Finder AppleShowAllFiles YES killall Finder"

2
Dai

Следуй этим шагам.

  1. Откройте SVN или исходное дерево.
  2. Эти файлы будут там.
  3. Удалите эти файлы из исходного дерева или SVN.
  4. Теперь зайдите в проект xcode.
  5. Теперь передайте код один раз. Все предупреждение
1
umair farid

Я думаю, что теперь я решил проблему, удалив все экземпляры моей папки DerivedData и следуя инструкциям crashoverride777. Мне также пришлось изменить опцию DerivedData с относительной на Custom, которую можно найти в Xcode> Preferences> Tabs Tab.

1
Krivvenz

Я решил эту проблему, удалив . Git directory в "yourProject"/Pods. И можно удалить каталог .git в главном каталоге "вашегоПроекта".

1
A.Kant

я удалил старый объект модели из моего каталога проекта, и проблема решена.

0
Sajid Israr