Не могу редактировать xcdatamodeld в xcode4 momb - PullRequest
1 голос
/ 25 марта 2011

Я переименовал свой проект ... и шаг за шагом я переименовал все цели, классы AppDelegate и т. Д. В любом случае он собирается сейчас, но вылетает, так как не может найти .momd в приведенном ниже коде:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyApp" withExtension:@"momd"];

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

Когда я нажимаю на файл .xdatamodeld, он больше не открывает редактор. Это просто ничего не делает. Щелчок правой кнопкой мыши приносит мне ноль вариантов.

Я попытался удалить файл xdatamodeld и создать новый, но у него та же проблема. Когда я нажимаю на него, он не открывает редактор.

Когда я создаю новый шаблон проекта xcode основных данных, он открывает редактор, когда я нажимаю на него. Что я тут не так делаю?

Ответы [ 4 ]

3 голосов
/ 26 мая 2012

Я повторно добавил файл .xcdatamodeld в свой проект и удалил старую ссылку.Теперь снова работает.

2 голосов
/ 25 марта 2011

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

Вот некоторые заметки, которые я сделал во время прошлого поиска неисправностей:

  • Устранение неполадок доступа к базе данных - получение правильной мамы:
  • Первое, что следует заподозрить, это что managedObjectContext не указывает на правильную модель данных (или модель управляемого объекта, «мама»). (На самом деле вы, вероятно, используете тип: @ «momd», но это целевая мама, которая была потеряна.)
  • В вашем делегате приложения найдите метод accessoragedObjectModel (созданный Xcode, когда вы указали хранилище Core Data при создании проекта). Поместите точку останова в этом методе в строку, которая возвращает маму.
  • Запустите программу и, когда она достигнет точки останова, перейдите к модели отладчика и введите «po», а затем имя возвращаемой переменной mom. (Это команда печати объекта GDB.)
  • То, что распечатывается, будет включать «сущности {», за которыми следует описание сущностей в вашей модели данных. Если ничего не следует за фигурной скобкой, возвращается пустая мама - у вас нет доступа к правильной модели данных.
  • Если при щелчке по xcdatamodel в Xcode отображается полная модель данных, как и ожидалось, включена ли она в xcdatamodeld? Это своего рода файл компоновщика / маршрутизатора / пути, и он может потерять свой путь. Сделайте это:
    - Во-первых, текущий xcdatamodel, тот, с зеленым значком галочки, первый? Если нет, перетащите его на первое место, а затем снова протестируйте приложение.
    - В Finder сделайте копию вашего xcdatamodel в другом месте для безопасного хранения.
    - Избавьтесь от xcdatamodeld, в Finder и / или Xcode (я не уверен, в каком порядке я это сделал). Когда закончите, это не должно появиться в Xcode.
    - Перетащите xcdatamodel (тот, что находится в папке проекта) из Finder в панель «Группы и файлы» Xcode для проекта и выберите параметр, который делает копию для проекта.
    - Выберите xcdatamodel, Дизайн> DataModel> AddModelVersion. Теперь у вас должен быть новый файл xcdatamodeld.
    - Запустите тест снова, выполнив команду gdb print object в точке останова. Надеюсь, вы получите хорошую длинную распечатку, представляющую вашу модель данных.
    - В будущем избегайте группировки файлов xcdatamodel / d в папку в Xcode. Это, кажется, запутывает вещи.
  • Изучение содержимого файлов xcdatamodel / d в Finder: Это на самом деле скрытые папки, как вы увидите, если вы удалите их расширения. Внутренности модели данных представляют собой список, который можно открыть, дважды щелкнув. Если вы сделаете это, протестируйте приложение позже и убедитесь, что оно все еще имеет доступ к вашей базе данных. Если нет, выполните действия, описанные выше.
0 голосов
/ 23 декабря 2011

Решением для меня было вернуться к рабочей копии моего .xcdatamodeld.Затем, вместо того, чтобы переименовывать его с помощью поиска или панели навигатора XCode 4, я выбрал файл .xcdatamodeld в левой панели навигации и отредактировал имя группы .xcdatamodeld в правая панель XCode 4 под заголовком identity вверху.

Как только я изменил имя там, чтобы оно соответствовало моему новому имени проекта, XCode автоматическиобновил для меня имя файла в файловой системе.

Мне не нужно было редактировать свойство пути, как предложил moon6pence.

0 голосов
/ 04 июля 2011

Я был в той же ситуации и наконец исправлен.

В моем случае проблема возникает из свойства группы проекта Xcode: path .

Проверьте свойство пути вашей группы проектов, в которой есть файл xcdatamodeld.

В моей ситуации это отличалось от xcdatamodeld файл действительно существует,

и путь к файлу xcdatamodeld был ../Model/XX.xcdatamodeld (пример)

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

Таким образом, Xcode не может найти файл xcdatamodeld. Я добавляю новый файл xcdatamodled, но эта ситуация повторилась.

Проверьте, действительно ли ваш файл xcdatamodeld существует в настройках вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...