假设在CoreData模型中有一个名为PERSON的实体,并且使用NSPanel(显示为工作表)来询问创建此类实体实例所需的信息。 NSPanel还有一个“保存”和“取消”按钮。
实现这一目标的最佳方式是什么?
我目前的做法是创建NSPanel并向NSTextField添加与PERSON Entity的FirstName和LastName属性相对应的出口。
对于“保存”按钮,我创建了一个“保存操作”,用于“读取”用户通过插座输入的数据,并使用提供的信息手动创建PERSON实体。
对于“取消”按钮,我创建了一个仅关闭NSPanel的“取消操作”。
即使整个过程按预期工作,我发现这种方法很混乱。需要实现编辑功能会变得更糟,因为需要一个新方法从所选实体读取数据并将其传递给NSTextField,并将所需逻辑添加到保存操作以考虑更新操作。 / p>
我想知道在这种情况下是否可以使用完整的CoreData / Binding方法?
Full CoreData / Binding方法的主要问题,至少是我对这些框架的短暂体验,是因为一旦用户开始在新实例上输入信息,就已经到了晚期取消操作。正确?
答案 0 :(得分:0)
您描述的设置绝不凌乱。相反,它提供了增强UI体验的充分机会。
你的最后一点,或“主要问题”,根本不是问题。您可以设置NSPanel并让用户输入新值,如果按下取消,则只需关闭它们。仅当按下保存按钮时,才会将新对象插入核心数据managedObjectContext
并保存。
同样,在编辑时,您只需检索之前的数据并填充字段。您保留对记录的引用,如果按保存,则修改属性并保存managedObjectContext
。如果操作被取消,您只需丢弃参考。