macos - 以编程方式创建实体并将其添加到数组 Controller

标签 macos cocoa core-data nstableview cocoa-bindings

我有一个绑定(bind)到 nstableview 的数组 Controller 。我还有一些 nstextfields,用户填充这些字段然后按“添加”按钮。我想获取这些字段,名字和姓氏,并使用它们来填充实体。我将把该实体称为 PersonEntity。

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

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

它崩溃了,说我无法在 [customerArray addObject:customer] 行添加 nil。该行是我尝试将实体添加到绑定(bind)到 TableView 的数组 Controller 。做这样的事情的正确方法是什么?

最佳答案

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

如果您的 ArrayController(绑定(bind)到 NSTableView 的那个)绑定(bind)到 CoreData 源,则不要直接向其添加对象。相反,您将其添加到您的 ManagedObjectContext 中,它将反射(reflect)在您的 NSTableView 上。

代码应如下所示:

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

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

/* Save Event */
NSError * error = nil;
[__managedObjectContext save: &error];

希望这有帮助! 鬃毛

关于macos - 以编程方式创建实体并将其添加到数组 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936147/

相关文章:

php - 在 Mac OS X 10.8.3 上激活 Apache/PHP

objective-c - 如何创建一个类似 iTunes 迷你播放器的 NSWindow(总是在最上面但没有焦点!)

objective-c - 如何从 Mac osx 10.5 中的字体文件获取字体名称?

ios - stringWithFormat 在 LLDB 中不起作用

macos - 打开状态栏窗口 OS X 10.10 应用程序

ruby - 在 Mountain Lion : rehash issue 上安装 Octopress

c++ - macOS High Sierra 系统日志不工作

ios - 如何从字符串列表中找到特定的字符串?

ios - 最佳实践 : ListView - DetailView. 加载更多结果

ios - NSPredicate - 核心数据 - 将两个属性相互比较