为什么我的托管对象上下文没有被创建?

时间:2013-08-02 03:48:24

标签: iphone ios objective-c core-data uinavigationcontroller

确定。我有一个大问题。我最近使用Cocoapods下载了FRLayeredNavigationController。在使用它并简单地使用UINavigationController之前,一切正常。现在它只是一个大混乱。这是运行应用程序后的内容: enter image description here

这是我的代码: 的 AppDelegate.h

#import <UIKit/UIKit.h>
#import "FRLayeredNavigationController/FRLayeredNavigation.h"
@interface TasksAppDelegate : UIResponder <UIApplicationDelegate>

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@property (strong, nonatomic) UINavigationController *navigationController;
@property (strong, nonatomic) FRLayeredNavigationController *layeredNavigationController;
@property (strong, nonatomic) UIWindow *window;
@end

AppDelegate.m

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    ToDoTableViewController *tableViewController = [[ToDoTableViewController alloc]init];
    self.layeredNavigationController = [[FRLayeredNavigationController alloc]initWithRootViewController:tableViewController];
    tableViewController.managedObjectContext = self.managedObjectContext;
    self.window.rootViewController = self.layeredNavigationController;
    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

在我的控制台中,我得到以下内容:

DEBUG: self: 'ToDoTableViewController: 0x9537600', self.parentViewController: '(null)'

所以基本上我能说的是,由于某种原因FRLayeredNavigationController没有被创建,或者没有创建托管对象上下文。我不知道为什么。从字面上看,如果我将FRLayeredNavigationController更改为UINavigationController,一切正常&gt;。&gt;

如果它有所不同,TableViewController不是UITableViewController,而是UIViewController,其中包含tableView。

2 个答案:

答案 0 :(得分:0)

此处未生成ToDoTableViewController。 ManagedContext似乎没有导致这种情况。在你的ToDoTableViewController中,你有一个名为'parentViewController'的属性,你试图访问它吗?

答案 1 :(得分:0)

由于你的断点:也许在Xcode中检查随机断点:在Xcode中按⌘+ 6 查看所有断点。然而,日志消息来自FRLayeredNavigationController中的已知限制:在视图控制器(self.layeredNavigationItemsomeViewController.layeredNavigationItem)之前,您无法使用self(或someViewController)实际上推到了屏幕上。

FRLayeredNavigationController的documentation on layeredNavigationItem提到:

  

警告:在屏幕上显示视图控制器之前,此属性为nil。要在出现在屏幕上之前配置FRLayeredNavigationItem,请使用以下方法:

     

[FRLayeredNavigationController initWithRootViewController:configuration:]   [FRLayeredNavigationController pushViewController:inFrontOf:maximumWidth:animated:configuration:]

之所以(我是FRLayeredNavigationController的开发人员)是layeredNavigationItem是通过遍历视图控制器层次结构来实现的,在推送视图控制器之前,它根本不在层次结构中。因此,parentViewControllernil