Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone '+;entityForName:nil不是合法的NSManagedObjectContext_Iphone_Ios_Cocoa Touch_Core Data - Fatal编程技术网

Iphone '+;entityForName:nil不是合法的NSManagedObjectContext

Iphone '+;entityForName:nil不是合法的NSManagedObjectContext,iphone,ios,cocoa-touch,core-data,Iphone,Ios,Cocoa Touch,Core Data,当我试图将数据从核心数据加载到表视图控制器时出错。我相信这是由于managedObject没有被正确地传递 但我相信我是在研究了AppDelegate.m中didFinishLaunchingWithOptions下的代码之后这样做的 错误 ***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+entityForName:nil不是搜索实体名称“Club”的合法NSManagedObjectContext参数” MLVAPPDelegate.h

当我试图将数据从核心数据加载到表视图控制器时出错。我相信这是由于managedObject没有被正确地传递

但我相信我是在研究了AppDelegate.m中didFinishLaunchingWithOptions下的代码之后这样做的

错误

***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+entityForName:nil不是搜索实体名称“Club”的合法NSManagedObjectContext参数”

MLVAPPDelegate.h

#import <UIKit/UIKit.h>

@interface MLVAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

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

@end
#import <UIKit/UIKit.h>

@interface MLVClubSelectionViewController : UITableViewController

@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;

@end
MLVClubSelectionViewController.h

#import <UIKit/UIKit.h>

@interface MLVAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

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

@end
#import <UIKit/UIKit.h>

@interface MLVClubSelectionViewController : UITableViewController

@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;

@end

您已经实现了方法
masterManagedObjectContext
,但从未调用过它。而是将
managedObjectContext
属性的值(与所有对象属性一样,将初始化为
nil
)指定为传递给控制器的上下文

您可以执行以下操作之一:

  • masterManagedObjectContext
    重命名为
    managedObjectContext
    ,这将提供
    managedObjectContext
    访问器的延迟加载实现(意味着
    self.managedObjectContext
    的计算值不再为
    nil
  • 您也可以按如下方式实现
    managedObjectContext

    - (NSManagedObjectContext *)managedObjectContext {
        return [self masterManagedObjectContext];
    }
    
  • 从应用程序委托中删除
    managedObjectContext
    属性,并仅使用
    masterManagedObjectContext
    方法。这还需要显式定义
    \u managedObjectContext
    实例变量


  • managedObjectController
    如何设置你的应用程序代理?在
    MLVClubSelectionViewController
    上设置
    managedObjectController
    之前,必须先执行此操作。也,子类
    UINavigationController
    很少见——您可能不需要这样做就可以构建您的应用程序。我在研究另一个SO问题时创建了子类,他们建议将其用于选项卡控制器。我已使用设置managedObjectController的完整AppDelegate对其进行了更新。您已经实现了
    masterManagedObjectContext
    但不要从任何地方调用它。我想这是我忽略的部分。我认为我所拥有的足以让它显示在表视图中。我应该添加什么?因此我执行了第一步,在应用程序委托中将masterManagedObjectContext重命名为managedObjectContext,错误现在消失了。但是表视图控制器仍然是空的。您在调试它时发现了什么?另外,您是否仍在
    numberOfSectionsInTableView:
    中返回
    0
    ?这将确保一个空白的表视图:)另外-我创建了一个聊天频道,欢迎加入我会尽力帮助你