Подтвердить что ты не робот

Какая разница между Xcoce перемещением в корзину и удалением ссылки?

Когда я хочу удалить файл в Xcode. Какой выбор выбрать между "перейти в корзину" и "удалить ссылку"?

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

4b9b3361

Ответ 1

Xcode хранит ссылки на файлы, которые составляют ваш проект в файле проекта, а именно файл projectName.xcodeproj. Теоретически ваши исходные и ресурсные файлы, составляющие ваш проект, могут быть на вашем жестком диске; конечно, это не хорошая практика.
Итак, когда вы добавляете существующий файл в свой проект, Xcode спрашивает, хотите ли вы скопировать его в папку проекта, что обычно нужно делать. Итак, когда вы идете на удаление файла, Xcode спросит вас, хотите ли вы удалить ссылку из своего проекта (и хранить файл там, где он живет на вашем диске), или если вы хотите удалить файл.

В основном, если вы проверяете "Копировать в проект" при добавлении файла, при удалении следует выбрать "Переместить в корзину", иначе выберите "Удалить ссылку". Этот последний вариант оставит файл на месте и просто удалит ссылку на него.

Ответ 2

Не прямой ответ на этот вопрос, но очень полезно знать. Я создал файл с именем Device.swift в своей ветке и добавил к нему некоторый код. Затем мой коллега также создал тот же файл Device.swift в своей ветке и объединил его до того, как я объединил свои изменения.

Что произойдет, так это то, что в моем xcodeproj/project.pbxproj было что-то вроде:

5C5809E72257D81500D4CBB2 /* Device.swift in Sources */

В то время как в основной ветке, которая имела свои изменения, было:

26E3A7A5226F6E13001B176C /* Device.swift in Sources */

Ну, у обоих есть Device.swift. Xcode увидит это как конфликт слияния, так как мы оба изменили одну и ту же строку. Если вы просто позволите им обоим быть там, то в вашем Xcode вы, вероятно, в конечном итоге дважды Device.swift и он не скомпилируется.

Также было бы больше проблем, если бы я добавил Device.swift в /Models/Devices, в то время как он добавил его в /Modell/Gadgets.

Решение: Удалите все ссылки на: 5C5809E72257D81500D4CBB2/* Device.swift или другой. Я не уверен на 100%, как решить, какой из них вы должны удалить, поэтому я получил копию моего Device.swift до того, как начать удаление.

А также, если файлы находятся в двух разных каталогах, вам придется вручную удалить один из них. Что вы предпочитаете