【发布时间】:2013-04-30 18:11:36
【问题描述】:
向我的应用添加核心数据功能时遇到问题。
我不明白为什么managedObjectContext 总是为零(即使在我的 AppDelegate 中)。我知道我应该从模型中传递它,但不知道该怎么做。
我收到以下错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用,原因:“+entityForName: nil 不是搜索实体名称“Goal”的合法 NSManagedObjectContext 参数
g4tappDelegate.h
#import <UIKit/UIKit.h>
#import "Goal.h"
@class g4tPopPageViewController;
@interface g4tAppDelegate : UIResponder <UIApplicationDelegate> {
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
UIWindow *window;
}
- (NSManagedObjectContext *)managedObjectContext;
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) g4tPopPageViewController *PopPageViewController;
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@end
g4tappDelegate.m
#import "g4tAppDelegate.h"
#import "g4tPopPageViewController.h"
#import "Goal.h"
@implementation g4tAppDelegate
NSManagedObjectContext *managedObjectContext;
@synthesize PopPageViewController;
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSManagedObject *newGoal;
//ERROR HERE
newGoal = [NSEntityDescription
insertNewObjectForEntityForName:@"Goal"
inManagedObjectContext:_managedObjectContext];
PopPageViewController.managedObjectContext = self.managedObjectContext;
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"AddGoal"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc];
[self.window setRootViewController:navigationController];
[self.window makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
}
【问题讨论】:
-
你在哪里初始化
_managedObjectContext? -
持久存储在哪里?
-
你有没有得到这个工作?如果是这样,请不要忘记将问题标记为已回答。 ;-)