NSManagedObjecgt的iOS CoreData自定义子类化

NSManagedObjecgt的iOS CoreData自定义子类化,ios,objective-c,swift,core-data,Ios,Objective C,Swift,Core Data,我有一个带有表单数据输入的Controller1。然后,在模型中进行计算;对一个名为Controller2的细节控制器执行一个segue。我像往常一样使用子类NSManagedObject为计算指定自定义方法 我读过其他关于这方面的SO文章,但没有一篇是针对这一特定场景的 1/当用户填写表单数据并点击按钮时,它会转到控制器2,显示输入和传递数据的一些计算结果。到现在为止,一直都还不错。计算是通过模型类中的函数完成的 2/此控制器2有一个文本字段。如果此字段中有有效文本,则用户应能够保存数据。若t

我有一个带有表单数据输入的Controller1。然后,在模型中进行计算;对一个名为Controller2的细节控制器执行一个segue。我像往常一样使用子类NSManagedObject为计算指定自定义方法

我读过其他关于这方面的SO文章,但没有一篇是针对这一特定场景的

1/当用户填写表单数据并点击按钮时,它会转到控制器2,显示输入和传递数据的一些计算结果。到现在为止,一直都还不错。计算是通过模型类中的函数完成的

2/此控制器2有一个文本字段。如果此字段中有有效文本,则用户应能够保存数据。若textfield为空,则用户应无法保存数据。暂时忽略UI禁用/启用保存按钮

3/如果我遵循并使用
insertNewObjectForEntityForName
,它是有效的,但有一个微妙的问题

即使Controller2中的textfield为空,也会创建一个空行。这是因为当将数据分配给Controller2时,为了在Controller2中显示使用所述子类函数从NSManagedObject子类进行的计算,需要实例化子类。它基本上是在ManagedObjectContext中插入一个实体。但如果controller2中的textfield为空,则我希望显示数据计算,但在用户点击save时完成检查之前,尚未将其插入managedobjectcontext

有没有一种方法可以解决这个问题,而不必创建两个类:

  • 一个普通的非CoreData类,其所有函数都使用静态方法调用来创建另一个类的实例,该类是
    NSManagedObject
    的实际子类

  • 来自上述类的NSManagedObject映射数据的子类

这将是一种痛苦,因为来自函数的数据必须在UI中显示和存储,只有存储是在存在某些表单数据的条件下进行的


多谢各位

初始化托管对象类时,可以为上下文传递nil。只需确保在准备好后插入对象,并且在进行计算时不要试图依赖任何需要设置上下文的内容(可能您已经不需要了,因为它是基于数据的)。

。。。如果用户可以取消整个视图控制器,则可以使用子上下文(以及所有伴随的复杂性),只有在需要时才保存给家长。@Wain感谢您的回复-事实上,计算不依赖于上下文。@stevesilva我从未使用过这种方法,但可以理解它的复杂性,所以不希望使用这种方法。nil上下文方法似乎更容易,因此目前将继续使用它。谢谢你们两位!!