2013-12-18 4 views
0

Я просмотрел другие вопросы и ответы, но я все еще не могу установить managedObjectContextUITableViewController, встроенный в UINavigationController. Вот мой текущий код:Set managedObjectContext UITableViewController с UINavigationController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
UINavigationController *navigationController = [sb instantiateViewControllerWithIdentifier:@"Learn"]; 

MasterViewController *controller = (MasterViewController *)navigationController.topViewController; 

controller.managedObjectContext = self.managedObjectContext; 
return YES; 
} 

Однако, когда я запускаю код, приложение падает и производит вывод журнала этого:

+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 

Когда я пытаюсь только при входе NSLog(@"%@", self.managedObjectContext); в MasterViewController результат является `(нуль)

Я создал мой managedObjectContext как так и не получил никаких ошибок:

- (NSManagedObjectContext *)managedObjectContext { 
if (_managedObjectContext != nil) { 
    return _managedObjectContext; 
} 

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
if (coordinator != nil) { 
    _managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [_managedObjectContext setPersistentStoreCoordinator:coordinator]; 
} 
return _managedObjectContext; 
} 

N.B. Я пытаюсь установить UITableViewController, который не является контроллером начального вида

Любые идеи? Заранее спасибо!

+0

получить его из вашего приложения делегат: '[AppDelegate managedObjectContext]' –

+0

Показать создание МПЦ. Любые ошибки? – Wain

+0

где u создал ur managedObjectContext? –

ответ

0

Если вы используете шаблонный Apple, шаблон (от Xcode), ваше приложение делегат должен иметь метод, как это, создавая управляемые объекты динамически при вызове self.managedObjectContext:

- (NSManagedObjectContext *)managedObjectContext 
{ 
    if (_managedObjectContext != nil) { 
     return _managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     _managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [_managedObjectContext setPersistentStoreCoordinator:coordinator]; 
    } 
    return _managedObjectContext; 
} 

Поставьте точку останова и проверки что вы передаете правильный контекст контроллеру представления. Убедитесь, что свойство VC: (nonatomic, strong).

0

Если ваш контроллер навигации установлен в качестве начального контроллера в раскадровке, проблема в том, что вы создаете экземпляр нового экземпляра этого контроллера навигации с помощью instantiateViewControllerWithIdentifier. Вы должны получить ссылку на MasterViewController как это вместо:

MasterViewController *controller = (MasterViewController *)[(UINavigationController *)self.window.rootViewController topViewController]; 
Смежные вопросы