gpt4 book ai didi

cocoa - 从 AppDelegate 获取 ManagedObjectContext

转载 作者:行者123 更新时间:2023-12-03 16:41:37 25 4
gpt4 key购买 nike

我正在尝试从 mac 平台(不是 iOS)上的 AppDelegate 获取 managedObjectContext 来执行一些 CoreData 操作。正如这里的许多答案已经指出的那样(尽管主要针对 iOS),有几个选项,例如创建一个单例来访问 ManagedObjectContext 或向我想要访问的每个 Controller 添加一个 ManagedObjectContext 属性它。
我已经完成了后者,但每次我尝试创建基于某个实体的 ManagedObject 时,都会收到以下错误: +entityForName: nil is not a legal NSManagedObjectContext parameter Searching forEntity

这是我到目前为止所做的:
ViewController.h:

@interface HitpointsTableViewConroller : NSObject <NSTableViewDataSource> {
IBOutlet NSTableView *tableView;
NSMutableArray *list;
}

@property NSManagedObjectContext *managedObjectContext;

该 Controller 的 Init 方法以获取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];
}

有什么想法为什么这不起作用吗?

谢谢!

最佳答案

首先:您的属性没有属性。 AFAIK,“原子”是默认值,这对大多数对象来说都是不好的。

第二:如果您总是从应用程序委托(delegate)获取 MOC,为什么要将其分配给属性?在你的 addItem 方法中,只需从委托(delegate)而不是属性中获取你的 MOC。

第三:如果从委托(delegate)获取 MOC 仍然导致 nil 错误,那么您显然需要检查委托(delegate)中的方法。

(最初将此作为评论发布,但由于评论不允许段落格式,所以我将其重新发布为答案)

关于cocoa - 从 AppDelegate 获取 ManagedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17832727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com