.xcdatamodeld файл, не отображающий структуру модели данных в Xcode

У меня есть файл .xcdatamodeld в моем проекте, но он не открывается в модель данных.

Когда я нажимаю на файл на левой боковой панели в Xcode, он продолжает отображать содержимое ранее выбранного файла вместо отображения модели данных. Аналогично, когда я нажимаю правой кнопкой мыши на файле и выбираю "Открыть как", я не могу выбрать его отображение в качестве модели данных - ничего не возникает. Я проверил код из репо SVN, и даже владелец фидера не смог увидеть его в своем рабочем пространстве.

Ответ 1

Это симптом, который я видел время от времени. По меньшей мере в одном случае это означало, что Xcode имеет неправильный путь, хранящийся в компоненте path раздела XCVersionGroup файла project.pbxproj, и имеющий явно ненужный дополнительный компонент name в этом разделе. Возможно, было бы возможно вручную отредактировать этот файл, но я всегда неохотно обезьяна с файлом проекта, и, к счастью, там проще.

  • Перейдите к файлу .xcdatamodeld в Finder. Самый простой способ сделать это - щелкнуть правой кнопкой мыши/Ctrl-клик по файлу .xcdatamodeld и выбрать "Показать в Finder".
  • Перетащите файл из Finder и опустите его непосредственно над или под текущей ссылкой на .xcdatamodeld в Навигаторе проектов в вашем проекте Xcode.
  • Нажмите "ОК", чтобы принять импорт, убедившись, что вы добавляете его в правильные цели. (Какие цели верны, будет зависеть от вашего проекта.)
  • Теперь у вас будет две ссылки на один и тот же файл в Project Navigator. При нажатии на любой из них теперь будет отображаться желаемая структура модели данных.
  • Удалите дублируемую ссылку на файл модели. Нажмите на одну из ссылок на файлы (кажется, не имеет значения, хотя, возможно, лучше удалить старый) и нажмите "Удалить".
  • В появившемся диалоговом окне подтверждения обязательно выберите "Удалить ссылку" и НЕ перемещайте файл в корзину. (Две ссылки указывают только на один фактический файл в файловой системе. Таким образом, перемещение в корзину приведет к уничтожению единственной копии.)

Теперь вы оставили только одну ссылку на модель данных, и она работает.

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

Ответ 2

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

Ура!

Ответ 3

Я столкнулся с той же проблемой в Xcode 6.3

Единственное решение, которое сработало для меня, состояло в том, чтобы перенести файл .xcdatamodeld из моей папки "Ресурсы" и в корневую папку проекта в проводнике проекта Xcode (расположение в файловой системе не материя)

Я все еще не уверен, почему просто перемещение местоположения файла в структуре проекта заставляет его вообще не появляться при нажатии. но, по-видимому, по крайней мере, в моей настройке, ему не нравится жить в папка "Ресурсы".

Ответ 4

Сегодня я был жертвой этой проблемы на Xcode8.

Я решил это просто, поместив файл xcdatamodeld вне любой группы в навигаторе проекта (левая панель). Как только я переведу его в группу, я больше не могу открыть маленького парня.

Ответ 5

Файл .xcdatamodeld представляет собой пакет. Он содержит пакеты .xcdatamodel, по одному для каждой версии модели. Внутри каждого .xcdatamodel есть файл contents, который представляет собой XML с описанием сущностей. Чтобы увидеть, что находится внутри ваших пакетов, щелкните их правой кнопкой мыши в Finder и выберите "Показать содержимое пакета".

Show Package Contents in Finder

Возможно, вы не добавили файл contents в свой репозиторий. Таким образом, вы не сможете увидеть свою модель при создании с нее новой рабочей копии.

Ответ 6

У меня была аналогичная проблема с Xcode 7.3.1.

Оказалось, что это связано с тем, как были настроены пакеты модели данных.

Я обнаружил, что один встроенный модельный пакет вложен внутри другого. Скажем, модель данных верхнего уровня под названием FolderNodes.xcdatamodeld, содержащая другую с точно таким же именем... FolderNodes.xcdatamodeld. Inside FolderNodes.xcdatamodeld - это фактический файл содержимого, в котором есть информация о модели.

Решение для меня состояло в том, чтобы перетащить встроенный пакет FolderNodes.xcdatamodeld(номер 2) в проект Xcode и НЕ вложенную папку.

Apple использует пакет для управления версиями, но я думаю, что логика, связанная с перемещением файла модели данных, каким-то образом разбивает исходный пакет, создавая избыточную оболочку.

Ответ 7

Убедитесь, что ваш Version Editor не активен.

При открытии результатов Version Editor в коде xml вместо Data Model. Вы также не сможете выбрать Data Model в контекстном меню файла xcdatamodeld в Project Navigator.

Ответ 8

Случается также на XCode 8.3.

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