правильное использование основных данных для множественного доступа к данным - iphone / ipad - PullRequest
3 голосов
/ 09 марта 2010

У меня вопрос;)

На самом деле я хочу использовать данные ядра в разных потоках. У меня есть два UIview, которые отображают данные из одной таблицы в базе данных.

Если удалить запись в первом представлении, я должен сохранить ее, а затем попросить PersistentStoreCoordinator дать мне (UIview) новый управляемый объект. Вот что говорят в официальном видео "Работа с основными данными" на itunesU

С отличной системой обмена сообщениями из какао я могу справиться с базовой синхронизацией. (Я отправляю сообщение «должен получить новый МО»)

Но как мне правильно сохранить и «закрыть» БД, а затем получить другой управляемый объект.

<### update ###>

У меня есть 2 viewController, по одному для каждого из представлений, с которыми я работаю.

Если я установлю стек coredata на каждом из ViewControllers, данные будут доступны из каждого представления, но без синхронизации.

Но если я помещаю стек основных данных в AppDelegate, я получаю исключение:

*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x498f600 <x-coredata:...>'

что мне делать?

<### update ###>

Заранее спасибо за любую помощь в этом;)

1 Ответ

7 голосов
/ 09 марта 2010

Каждый просмотр НЕ в отдельном потоке.Весь пользовательский интерфейс для вашего приложения находится в потоке ONE .

В этой ситуации вам не нужно использовать многопоточность.

Для создания нового объекта вам просто нужнозапросить его, используя метод класса для объекта NSEntityDescription.Чтобы удалить объект, вам нужно использовать метод -deleteObject: в NSManagedObjectContext.

update

У вас должен быть только один стек основных данных, если вы не работаете в многопоточной среде (вашне).В идеале стек должен быть создан в Application Delegate, а затем распространен до экземпляров UIViewController.Если вы получаете сообщение об ошибке, вам необходимо устранить ее отдельно.Судя по сообщенной вами ошибке, вы сохраняете / вешаете на NSManagedObject, который был удален Core Data и, следовательно, не может быть выполнен, поскольку его больше нет в хранилище.Это отдельная проблема, из которой живет стек.

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

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