实现核心数据实体插入/编辑的最佳方法



让我们假设在CoreData模型中有一个名为PERSON的实体,并且使用NSPanel(显示为Sheet)来请求创建该实体实例所需的信息。NSPanel也有保存和取消按钮。

实现这个的最好方法是什么?

我目前的方法是创建NSPanel,并将出口添加到NSTextField的对应PERSON实体的FirstName和LastName属性

对于Save按钮,我创建了一个Save Action,用于"读取"用户通过Outlets输入的数据,并使用提供的信息手动创建PERSON Entity。

对于取消按钮,我已经创建了一个取消动作来关闭NSPanel。

尽管整个事情按预期工作,但我发现这种方法很混乱。由于需要实现编辑功能,事情变得更糟,因为需要一个新方法来从选定的实体读取数据并将其传递给NSTextField,并将所需的逻辑添加到Save Action以解释更新操作。

我想知道在这种情况下,完整的CoreData/Binding方法是否可行?

完整CoreData/Binding方法的主要问题,至少就我在这些框架上的短暂经验而言,是这样一个事实,即一旦用户开始在新实例上输入信息,就已经太晚了Cancel操作。对吧?

您所描述的设置绝不是混乱的。相反,它提供了充分的机会来增强UI体验。

你的最后一点,或"主要问题",根本不是问题。你可以打开NSPanel,让用户输入新值,如果Cancel被按下,就简单地取消它们。只有按下Save按钮,才能将新对象插入核心数据managedObjectContext并保存。

同样,在编辑时,只需检索之前的数据并填充字段。您保留对记录的引用,如果按Save,则修改属性并保存managedObjectContext。如果操作被取消,您只需丢弃引用即可。

最新更新