我正在尝试managedObjectContext
从AppDelegate
mac 平台(不是 iOS)上获取一些 CoreData 操作。正如 SO 上的许多答案已经指出的那样(尽管主要针对 iOS),有几个选项,例如创建一个单例来访问 managedObjectContext 或向managedObjectContext
我想要访问它的每个控制器添加一个属性。
我已经完成了后者,但是每次尝试基于某个实体创建 managedObject 时,都会出现以下错误:+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity
这是我到目前为止所做的:
ViewController.h:
@interface HitpointsTableViewConroller : NSObject <NSTableViewDataSource> {
IBOutlet NSTableView *tableView;
NSMutableArray *list;
}
@property NSManagedObjectContext *managedObjectContext;
该控制器的初始化方法以获取managedObjectContext
- (id)init {
if (self = [super init]) {
// get the managedObjectContext
NSManagedObjectContext *currentContext = [[NSApp delegate]managedObjectContext];
self.managedObjectContext = currentContext;
hitpointsList = [[NSMutableArray alloc]init];
}
return self;
}
我创建一个新的 NSManagedObject 实例的方法:
- (IBAction)addItem:(id)sender {
// create new item
Item *item = (Item *)[NSEntityDescription
insertNewObjectForEntityForName:@"Item"
inManagedObjectContext:[self managedObjectContext]];
// set defaults for that item
[item setName:@"Coffee"];
[item setPrice:2.99];
// add hitpoint to list
[list addObject:item];
}
任何想法为什么这不起作用?
谢谢!