#xcode #core-data #version-control #xcdatamodel
#xcode #core-data #управление версиями #xcdatamodel
Вопрос:
Как я могу удалить старую модель данных в Xcode? Опция в меню отключена. (Модели, которые я хочу удалить, не были опубликованы для общественности — это промежуточные модели разработки.)
Комментарии:
1. Вы имеете в виду, что опция «Удалить» в меню «Редактировать» отключена (в то время как ваш старый файл модели данных выбран в инспекторе файлов)? Или вы имеете в виду что-то совсем другое?
2. Да, выбор удаления в меню Редактирования, а также в меню управления, вызываемом правой кнопкой мыши (и в любом меню, которое я могу найти), отключен. Я знаю, что некоторые люди переходят к предыдущему xcode для удаления старых / неиспользуемых версий, но у меня она не установлена.
3. Майкл, ты можешь сделать это в xCode 4?
4. ДА… Я никогда не видел, чтобы опция меню «удалить» была отключена ни для одного из моих проектов XCode 4.
5. Особенно для xcdatamodel? У других была такая же проблема с удалением xcdatamodels XCode 4.. Я просто не видел опубликованного решения.
Ответ №1:
Это взлом, но у меня это сработало:
- Установите текущую версию модели в Xcode на ту, которую вы хотите сохранить
- Удалите .xcdatamodeld из вашего проекта (Щелкните правой кнопкой мыши -> Удалить -> Удалить только ссылку)
- Покажите содержимое пакета .xcdatamodeld в Finder (щелкните правой кнопкой мыши -> Показать содержимое пакета)
- Удалите файлы .xcdatamodel, которые вам больше не нужны
- Повторно добавьте файл .xcdatamodeld в свой проект
Это устраняет необходимость вручную изменять какие-либо файлы метаданных проекта.
Комментарии:
1. Я попробовал этот метод и обнаружил, что из-за того, как были названы версии моей модели, версия модели была неправильно отсортирована, и была выбрана неправильная версия по умолчанию, когда я повторно добавил файл xcdatamodel в проект. Это может быть связано с тем, что у меня до 38 версий модели, и я не изменил имя версии по умолчанию, поэтому версии называются «MY_APP 37.xcdatamodel». Я хотел удалить 38. При импорте она была извлечена в лексическом порядке, что означает, что «MY_APP 10.xcdatamodel» была первой и выбрана по умолчанию. В моем случае это не идеально.
2. Майк — у меня та же проблема, хотя я смог изменить порядок в project.pbxproj в текстовом редакторе без каких-либо серьезных проблем. Все еще не идеально.
3. Это не работает с Xcode 5.1.1. Ранее, со многими небольшими изменениями модели и увеличенными номерами версий модели, облегченная автоматическая миграция работала корректно. Однако, после попытки удалить все посторонние модели «только для разработки», используя этот подход, я получаю сообщение об ошибке: «Ошибка: не удается найти или автоматически вывести модель сопоставления для миграции».
4. в 6.4 нет возможности удалять ссылки. Она только что была удалена. Остальные шаги, похоже, сработали
5. Похоже, это работает в Xcode 10.2.1. Моя миграция заключалась в некоторых изменениях имени атрибута, поэтому ничего серьезного.
Ответ №2:
Я только что понял, что это необходимо сделать. Я создал новую версию модели, а потом понял, что она мне все-таки не нужна. Я был удивлен, обнаружив, что не было способа удалить ее (который я мог найти) из Xcode. Тем не менее, чтобы удалить его, я сделал следующее:
Сначала я убедился, что это не моя текущая версия модели. Затем я зашел в Finder и нашел свой файл *.xcdatamodeld. Щелкните правой кнопкой мыши и покажите содержимое пакета на этом. Там вы найдете фактический файл модели и сможете удалить его.
Это все еще не удаляет ее из Xcode, и она будет отображаться красным цветом в файлах и группах. Чтобы этого не произошло, вернитесь в Finder и покажите содержимое пакета в вашем основном файле * .xcodeproj (возможно, вы захотите сначала убедиться, что у вас есть резервная копия этого файла). Там откройте и отредактируйте project.pbxproj, найдите имя версии вашей модели, в моем случае «интервал 8». Для меня это появилось в двух отдельных строках. Я удалил эти строки, и теперь они полностью удалены из Xcode.
Комментарии:
1. @Daniel_Wood, да, я тоже нашел, как это сделать вручную, но будьте осторожны. Это может вызвать некоторые проблемы в будущем… Мне пришлось повторить это несколько раз, иногда это также приводит к переключению активной и неактивной версий, затем, когда вы сбрасываете правильную версию, она не перемещает ее в начало списка (иногда), что вызывает больше проблем! Большое спасибо за ввод, хотя. Кажется странным, что они удалили бы эту возможность — нам никогда не пришлось бы заходить в файл .xcodeproj!
Ответ №3:
Это сработало для меня в XCode 10.3 без проблем с упорядочением, возникающих при удалении всей модели и добавлении ее снова:
- Выберите любую версию модели, отличную от той, которую вы хотите удалить.
- В XCode щелкните правой кнопкой мыши файл .xcdatamodeld и выберите «Показать в Finder».
- Закройте XCode.
- В Finder щелкните правой кнопкой мыши тот же файл и выберите «Показать содержимое пакета».
- Запишите название модели, которую вы хотите удалить, затем из Finder удалите ее.
- Все еще в Finder, перейдите к файлу проекта (.xcodeproj).
- Щелкните правой кнопкой мыши и откройте с помощью Atom или любого другого редактора.
- На панели «Проект» откройте файл project.pbxproj.
- Удалите все строки, содержащие имя модели, которое вы удалили (пример: «ABC 17.xcdatamodel»). Вы найдете две строки, похожие на следующие:
9D88880323C545B800A789B9 / ABC 17.xcdatamodel / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = «ABC 17.xcdatamodel«; SourceTree = «»;
и
9D88880323C545B800A789B9 / ABC 17.xcdatamodel /,
Обратите внимание, что если вы найдете третью строку, это будет что-то вроде:
CurrentVersion = 9D88880323C545B800A789B9 / ABC 17.xcdatamodel /;
That means it is the currently selected model. Never delete this line. Just change the text to another model version.
- Повторно откройте XCode.
Комментарии:
1. Я нашел упоминание об Atom (и ссылку на него) полезным, поскольку не был уверен, какой редактор использовать.
Ответ №4:
Мой ответ вообще не касается конкретной проблемы, но он быстрый и работает. Для тех, кто использует git. Вы можете просто отменить неустановленные изменения.
git stash save --keep-index
Затем вы можете удалить этот тайник с помощью git stash drop
команды, если хотите.