Как удалить старую / неиспользуемую версию модели данных в Xcode

#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:

Это взлом, но у меня это сработало:

  1. Установите текущую версию модели в Xcode на ту, которую вы хотите сохранить
  2. Удалите .xcdatamodeld из вашего проекта (Щелкните правой кнопкой мыши -> Удалить -> Удалить только ссылку)
  3. Покажите содержимое пакета .xcdatamodeld в Finder (щелкните правой кнопкой мыши -> Показать содержимое пакета)
  4. Удалите файлы .xcdatamodel, которые вам больше не нужны
  5. Повторно добавьте файл .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 без проблем с упорядочением, возникающих при удалении всей модели и добавлении ее снова:

  1. Выберите любую версию модели, отличную от той, которую вы хотите удалить.
  2. В XCode щелкните правой кнопкой мыши файл .xcdatamodeld и выберите «Показать в Finder».
  3. Закройте XCode.
  4. В Finder щелкните правой кнопкой мыши тот же файл и выберите «Показать содержимое пакета».
  5. Запишите название модели, которую вы хотите удалить, затем из Finder удалите ее.
  6. Все еще в Finder, перейдите к файлу проекта (.xcodeproj).
  7. Щелкните правой кнопкой мыши и откройте с помощью Atom или любого другого редактора.
  8. На панели «Проект» откройте файл project.pbxproj.
  9. Удалите все строки, содержащие имя модели, которое вы удалили (пример: «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.
  
  1. Повторно откройте XCode.

Комментарии:

1. Я нашел упоминание об Atom (и ссылку на него) полезным, поскольку не был уверен, какой редактор использовать.

Ответ №4:

Мой ответ вообще не касается конкретной проблемы, но он быстрый и работает. Для тех, кто использует git. Вы можете просто отменить неустановленные изменения.

 git stash save --keep-index
  

Затем вы можете удалить этот тайник с помощью git stash drop команды, если хотите.