Xcode: выдает «файл xxx.png отсутствует в рабочей копии» при сборке проекта


265

После удаления / добавления некоторых файлов PNG в проект, я получил сообщения при сборке проекта.

"Файл ProjectPath \ aaa \ xxx.png отсутствует в рабочей копии."

Все эти файлы находятся в проекте, и приложение работает. Однако эти сообщения раздражают. Посмотрел файл .plist, но там нет упоминаний об этих файлах. Что я должен сделать, чтобы удалить эти сообщения?


Можно сослаться stackoverflow.com/questions/39711061/...
Shrawan

Ответы:


495

Предупреждение исчезнет, ​​как только вы передадите свои изменения (Xcode 8).


2
Обнаружил, что мне просто нужно было зафиксировать свои изменения в git после перемещения некоторых файлов в другой каталог.
Крис Ливдал

@LearnSwift Очистить Cmd + Shift + K, удалить ~ / Библиотека / Разработчик / Xcode / DerivedData / *?
Александр Васенин

2
@AlexanderVasenin
Учитесь, Свифт,

7
Для меня было достаточно просто постановки изменений. Хорошо знать.
очаровательная

13
Как вы упомянули, я обязательно зафиксировал и отправил свои последние изменения. Но именно это не устраняло ошибки. Тогда я сделал Xcode> Source Control> Discard ALL Changes, и он очистил меня от всех ошибок.
EdwardM

97

Кажется, что эта проблема может иметь разные причины, но это часто связано с программным обеспечением контроля версий.

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

git add .

После установки Xcode 8 и обновления кода до swift 3 у меня появилось более 300 проблем, требующих исправления синтаксиса (масштабный проект). Вместо этого я восстановил из резервной копии и обновил до swift 2.3 ... все прошло хорошо, за исключением нескольких этих «пропущенных» сообщений. Эта команда сработала как шарм - я снова в деле!
Дэн Росс

Это то, что сработало для меня. Проблема началась, когда я убрал то, что раньше имел в Стручках в пользу Карфагена
Себастьян Састре

1
Это работает и для меня. Кажется, что файл находится под контролем исходного кода, и git также нуждается в обновлении.
Шардон

после мерзавца совершить предупреждение исчезло
carmen_munich

3
Для других: вы должны находиться в корневой папке вашего проекта Xcode, выполнив «git add». команда: / MyXcodeProjects / AwesomeApp /
Филипп Борхес

59

Вы также можете отключить контроль исходного кода, сняв флажок

Xcode -> Настройки -> Контроль источника -> Включить контроль источника

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


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

1
Я сделал два действия: 1) «снять флажок», 2) «проверить» для включения контроля источника. Предупреждения исчезли.
Виктор

58

В XCode -> SoureControl:

Update+ Refresh Statusсделал это для меня.


Я думаю, что это может быть связано с изображениями, имеющими «@» в имени файла, такими как «@ 2x» и «@ 3x». SVN использует этот символ для синтаксиса ревизии (чтобы избежать его при работе с SVN в командной строке, вы просто добавляете «@» в конце, поскольку последнее вхождение - это то, которое он использует для определения информации о ревизии). У меня просто работало обновление. Когда я добавил несколько новых изображений, мне фактически пришлось вручную выбрать «добавить» в вариантах 2x / 3x на панели «Инспектор файлов». Weird.
Android3000

1
Это! так важно. Проблема также возникает, если вы переименуете папку, содержащую файлы. Другими словами, xcode предупреждает нас, потому что мы еще не передали наш код! хлоп хлоп хлоп
Warpzit

4
Это сработало для меня. Мне пришлось закрыть Xcode и снова открыть проект и запустить.
Jaytrixz

44

В моем случае файл отсутствовал в системе контроля версий.
Чтобы исправить, мне пришлось отбросить этот файл (будьте осторожны, только отбросьте отсутствующий файл, а не весь ваш проект):

  1. Xcode-> Source Control-> commit
  2. Щелкните правой кнопкой мыши отсутствующий файл
  3. Выберите Отменить изменения

Это работает для меня, я удалил папку DerivedData, и предупреждения были для файлов как "db.xcindexdb"
tontonCD

1
Сначала я позаботился о фиксации и отправке своих последних изменений. Затем я сделал Xcode> Source Control> Discard All Changes, и он очистил меня от всех ошибок.
EdwardM

19

Отключите Source Control, очистите папку сборки ( Alt+Shift+Cmd+K), затем снова включите Source Control.

Xcode -> Настройки -> Контроль источника -> Включить контроль источника


1
правильный ответ ... но точный ответ @emrekyv отвечал 3 месяца назад ... Он получает до голосования
Эриком

@eric он предложил просто отключить контроль исходного кода, я показал, как заставить его работать правильно.
Джордж

18

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


Да, это происходит, когда вы удаляете что-то из проекта под управлением версиями, когда на него все еще ссылается управление версиями (в моем случае svn). Использование «svn update» для восстановления отсутствующих файлов, а затем удаление их надлежащим образом с помощью «svn delete» заставило проблему исчезнуть для меня.
ChrisB

12

У меня была похожая проблема с несколькими файлами, которые давно были удалены из моего проекта Xcode, пока я все еще использовал Xcode 7.

Мое решение было:

  1. Создавайте файлы с именами, на которые жаловался Xcode (им не нужно никакого контента)
  2. Добавьте файлы в мой проект XCode (в XCode щелкните правой кнопкой мыши на моем главном каталоге проекта, нажмите Add files to my_project_name и выберите файлы, которые были только что созданы
  3. Выберите вновь добавленные файлы и удалите их - выберите «Переместить в корзину».

Это избавило меня от предупреждений.


Это сработало и для меня. У меня возникла проблема после копирования существующего проекта для создания производного, но с урезанной функциональностью ⇒ меньше исходных файлов.
Стефан

9

Добавить к ответу Александра Васенина ...

Сначала я совершил и подтолкнул свои изменения

Главное меню XCode> Контроль источника> Фиксация

Затем я отменил все изменения, чтобы избавиться от ошибок

Главное меню Xcode> Контроль источника> Отменить все изменения

После этого исчезли ошибки «файл xxx.png отсутствует в рабочей копии».


Что делать, если в проекте не используется контроль версий или система контроля версий, не поддерживаемая XCode.
Мартин

8

Это происходит, когда вы удаляете файл в Xcode, но не сообщаете об этом серверу svn.

Перейти к инструменту командной строки и удалить файл напрямую.

svn delete missingFile.m 

и совершить это

svn commit -m "Deleting file"

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


5

Я решил это.

просто откройте сторонний SVN-инструмент, найдите пропущенные файлы, вернитесь; вот и все.


5

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

cd "project folder path"
git add .

Позже перезапустите проект Xcode и снова откройте ваш проект.


Что делать, если вы не используете Git?
Мартин

4

Показать на цели-> фазы сборки -> скопировать ресурсы Bundle. и очистить папку сборки командой + shift + alt + k


3
Спасибо, но они не находятся в Фазах сборки, и очистка папки сборки тоже не помогает.
Ибан

4

Мне пришлось вручную войти в Терминал и удалить файлы с, git rm ProjectPath\aaa\xxx.pngа затем зафиксировать. После этого все работало нормально.


3

Получил это для каждого проекта после перехода на XCode 8. Это решило это:

При нажатой клавише Option, Product (в главном меню) -> Clean Build Folder.


2

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

Симулятор -> Сбросить контент и настройки ...


1

Для меня сработало следующее:

Поскольку я не использую и никогда не использовал Git, я создал новый проект (XCode 8, я не мог видеть обычное «использование Git» или, тем не менее, флажок был помечен). Затем я прямо удалил все файлы в этом новом проекте; пошел в старый испорченный проект, скопировал все в папку проекта, вернулся во вновь созданный проект, вставил старый материал, открыл это - все предупреждения о файлах, которые не существовали в течение нескольких месяцев, исчезли. Скрещенные пальцы.


1

У меня была та же проблема, и я решил ее, просто перетащив указанные файлы из поиска в навигатор проекта (убедившись, что в окне выбран «копировать файлы») и зафиксировав файлы.


1

Эти предупреждения не являются предупреждениями о сборке, они относятся к вашему репозиторию SVN.

Верно, что показанные каталоги больше не существуют, CocoaPods теперь сохраняет заголовки Pods/Headers/{Private,Public}. Вы должны обновить свою рабочую копию, чтобы отразить эти изменения.


Я не использую контроль версий внутри XCode, и проблема все еще возникла.
Мартин

1

В моем случае я перетаскиваю несколько файлов в окне проекта Xcode, чтобы добавить их. Он делал копии в моем исходном каталоге, но не помещал их туда, куда я хотел, чтобы они шли (он помещал их в корень моего каталога, я хотел, чтобы они находились в подкаталоге). Недолго думая, я просто схватил их в Finder и переместил в каталог, в котором хотел их найти. Вернувшись в окно проекта, он, конечно, не смог их найти, поэтому я удалил их в окне и добавил их снова. После компиляции я начал получать эти ошибки.

Как я уже упоминал выше, я думал, что это была проблема с git, но когда я запустил "git ls-tree --full-tree -r HEAD", я вообще не увидел файлы ??

В любом случае, чтобы исправить это, я использовал команду меню «Добавить файл ...», чтобы добавить каждый из файлов в папку по умолчанию, выполнить чистую сборку, а затем удалить их из окна проекта (используя команду «Переместить в корзину») и он избавился от всех ошибок.


1

У меня были предупреждения, а также не удалось зафиксировать изменения в XCode (используя svn). Все, что мне нужно было сделать, это перезапустить XCode, и проблема исчезла.



0

В моем случае это была проблема с git и нечувствительной к регистру файловой системой.

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

MyProject/Resources/foo.png
MyProject/resources/foo.png

Xcode жаловался на один из пропавших файлов.

Исправлено путем удаления оскорбительных файлов и повторного добавления.

cd MyProject
mv Resources/foo.png /tmp
git rm Resources/foo.png
git rm resources/foo.png
git commit
mv /tmp/foo.png Resources
git add Resources/foo.png
git commit

0

Это определенно связано с контролем источников. Я переименовал и переместил пару необязательных файлов plist и получил эту ошибку. Я использую SVN. Я смог исправить это Source Control - Commit, удалив старые ссылки на файлы.


У меня проблема, и я не использую контроль версий, о котором знает XCode. Все управление версиями осуществляется за пределами XCode.
Мартин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.