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

时间:2012-01-20 02:39:30

标签: macos cocoa core-data nstableview cocoa-bindings

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

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

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

崩溃说我无法在[customerArray addObject:customer]行添加nil。该行是我尝试将实体添加到绑定到tableview的数组控制器。做这样的事的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

我不确定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];

希望这有帮助! 鬃毛