Macos 以编程方式创建实体并将其添加到阵列控制器

Macos 以编程方式创建实体并将其添加到阵列控制器,macos,cocoa,core-data,nstableview,cocoa-bindings,Macos,Cocoa,Core Data,Nstableview,Cocoa Bindings,我有一个绑定到nstableview的数组控制器。我还有一些NSTEXT字段,用户填充这些字段后按“添加”按钮。我想获取这些字段,first_name和last_name,并使用它们填充实体。我会称实体为“个人” 因此,在add按钮的委托中,我获取两个文本字段的字符串值,填充一个实体,然后将其添加到数组控制器。我不熟悉cocoa/objective-c。这似乎是一件简单的事情,但似乎我无法创建我所期望的实体 PersonEntity* person [person setFirst_name:f

我有一个绑定到nstableview的数组控制器。我还有一些NSTEXT字段,用户填充这些字段后按“添加”按钮。我想获取这些字段,first_name和last_name,并使用它们填充实体。我会称实体为“个人”

因此,在add按钮的委托中,我获取两个文本字段的字符串值,填充一个实体,然后将其添加到数组控制器。我不熟悉cocoa/objective-c。这似乎是一件简单的事情,但似乎我无法创建我所期望的实体

PersonEntity* person
[person setFirst_name:firstName];
[person setLast_name:lastName];
[customerArray addObject:person];

当我在[customerArray addObject:customer]行不能添加nil时,它崩溃了。这一行是我尝试将实体添加到绑定到tableview的阵列控制器中。这样做的正确方法是什么?

我不确定PersonEntity是否是核心数据实体,但因为您的问题也被标记为核心数据,所以我假设它是

如果ArrayController(绑定到NSTableView的控制器)绑定到CoreData源,则不会直接向其中添加对象。相反,您将其添加到managedObjectContext中,它将反映在NSTableView中

代码应该如下所示:

 PersonEntity *person = [NSEntityDescription insertNewObjectForEntityForName:@"PersonEntity"
                                        inManagedObjectContext: managedObjectContext];

[person setFirst_name:firstName];
[person setLast_name:lastName];

/* Save Event */
NSError * error = nil;
[__managedObjectContext save: &error];
希望这有帮助!
Mane

我不确定PersonEntity是否是一个核心数据实体,但由于您的问题也被标记为核心数据,所以我假设它是

如果ArrayController(绑定到NSTableView的控制器)绑定到CoreData源,则不会直接向其中添加对象。相反,您将其添加到managedObjectContext中,它将反映在NSTableView中

代码应该如下所示:

 PersonEntity *person = [NSEntityDescription insertNewObjectForEntityForName:@"PersonEntity"
                                        inManagedObjectContext: managedObjectContext];

[person setFirst_name:firstName];
[person setLast_name:lastName];

/* Save Event */
NSError * error = nil;
[__managedObjectContext save: &error];
希望这有帮助!
Mane

你能为上下文多发一点代码吗?客户是什么类型的对象?有人分配过吗?天哪,我修正了密码,那里不应该有客户。未分配人员,如果我对人员执行alloc/init,则会崩溃。如果人员未分配,则可能是问题所在。如果
PersonEntity*person=[[PersonEntity alloc]init]
崩溃,那么问题还有另一个根源。什么是
PersonEntity
的超类?NSManagedObject,它是从我在gui编辑器中创建的核心数据实体创建的。我在Xcode中做了一些事情来生成类。我相信我在单击实体后进入了编辑器->创建NSManagedObject子类。我不是100%确定这是我使用的菜单选项,但是我没有看到我可能使用的其他任何东西。你能为上下文发布更多的代码吗?客户是什么类型的对象?有人分配过吗?天哪,我修正了密码,那里不应该有客户。未分配人员,如果我对人员执行alloc/init,则会崩溃。如果人员未分配,则可能是问题所在。如果
PersonEntity*person=[[PersonEntity alloc]init]
崩溃,那么问题还有另一个根源。什么是
PersonEntity
的超类?NSManagedObject,它是从我在gui编辑器中创建的核心数据实体创建的。我在Xcode中做了一些事情来生成类。我相信我在单击实体后进入了编辑器->创建NSManagedObject子类。我不是100%确定我用的是菜单选项,但我没有看到我可能用过的其他任何东西