Запутался в получении ManagedObjectContext из AppDelegate - PullRequest
6 голосов
/ 15 декабря 2009

Я просматривал документацию по основным данным и пытался выяснить, как организовать базовый стек данных, чтобы он был доступен для всех моих UITableViewControllers. Все примеры, представленные Apple, показывают, что это должно быть реализовано в AppDelegate, однако документация не рекомендует такой подход, потому что он слишком рыхлый! См ссылка .

(Почему это не упоминается в документации iPhone SDK - еще одна загадка)

Моя проблема в том, что я повторил шаблон проектирования в соответствии с примером Core Data, показанным в TopSongs, чтобы извлечь объект ManagedObjectContext для дочернего представления таблицы, и возникла следующая ошибка… не удалось найти NSManagedObjectModel для имени объекта 'Song ». Странно, но это можно найти в родительском табличном представлении, поэтому я предполагаю, что это потому, что стек основных данных в AppDelegate был сдан.

Кто-нибудь знает хороший пример, который следует шаблону дизайна, отличному от тех, которые созданы в Recipies, CoreData Books and Locations? Все они следуют той же схеме.

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

Ответы [ 3 ]

4 голосов
/ 15 декабря 2009

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

Что касается вашей проблемы, я считаю крайне маловероятным, чтобы элементы вашего стека базовых данных были освобождены. Во-первых, вы бы потерпели крах при отправке сообщения в ваш контекст или модель, а не при возврате отчета, которым вы сейчас являетесь. Если вы можете получить доступ к сущности «Песня» из другого места в вашем приложении, я уверен, что вы не передаете модель контекста должным образом тому экземпляру, который в ней нуждается.

1 голос
/ 15 декабря 2009

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

Если вы разместите некоторый код, вам будет гораздо проще понять, что происходит с вашей ошибкой. Первое, что я проверю, это то, что ссылка на ManagedObjectContext в вашем контроллере не ноль.

0 голосов
/ 15 декабря 2009

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

...