NSEntityDescription Не найдено - PullRequest
       0

NSEntityDescription Не найдено

2 голосов
/ 15 ноября 2011

У меня есть база данных CoreData, которая работает на контроллере корневого представления. У меня есть второй UIViewController, из которого, когда я переключаюсь и использую ту же самую точную строку для получения NSEntityDescription, я получаю следующую ошибку:

Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: + entityForName: не удалось найти NSManagedObjectModel для имени объекта «Channel»

Я делаю это следующим образом:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Channel" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];

Ошибка попадает в строку NSEntityDescription *entity. Как это возможно, если линия работает на другом UIViewController?

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Ошибка предполагает, что ManagedObjectContext имеет проблему.

Вы передаете свой ManagedObjectContext с первого взгляда на второй (если не попробуете)

Если это не работает, вы можете опубликовать код, который вы присваиваете self.context


Вы имеете в виду код, подобный этому, в вашем appDelegate в методе awakeFromNib:

RootViewController *rootViewController = (RootViewController *)[self.navigationController topViewController];
rootViewController.managedObjectContext = self.managedObjectContext;

Вам нужна вторая строка, чтобы передать фактический managedObjectContext

Вы можете поместить эту вторую строку в firstView так:

//secondViewController creation here
secondViewController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:secondViewController
                                         animated:YES];

Конечно, вам нужно настроить необходимые @property.
При этом с UIViewController до UIViewController, начиная с appDelegate, вы будете передавать ссылку на этот экземпляр NSManagedObjectContext.


Справочник по классам UITabBarController есть, если вам нужна дополнительная информация.
Просто убедитесь, что при выполнении задания установлены IBOutlet и что ваш NSManagedObject создан.

Массив корневых контроллеров представления, отображаемых интерфейсом панели вкладок.
@property (nonatomic, copy) NSArray * viewControllers

0 голосов
/ 17 октября 2012

Для меня это решило загрузку NSEntityDescription вручную вместо использования удобного метода из NSFetchRequest:

NSFetchRequest *fetchRequest = [[NSFetchRequest new] autorelease];
fetchRequest.entity = [NSEntityDescription entityForName:entity inManagedObjectContext:[self managedObjectContext]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...