NSManagedObjecgt的iOS CoreData自定义子类化
我有一个带有表单数据输入的Controller1。然后,在模型中进行计算;对一个名为Controller2的细节控制器执行一个segue。我像往常一样使用子类NSManagedObject为计算指定自定义方法 我读过其他关于这方面的SO文章,但没有一篇是针对这一特定场景的 1/当用户填写表单数据并点击按钮时,它会转到控制器2,显示输入和传递数据的一些计算结果。到现在为止,一直都还不错。计算是通过模型类中的函数完成的 2/此控制器2有一个文本字段。如果此字段中有有效文本,则用户应能够保存数据。若textfield为空,则用户应无法保存数据。暂时忽略UI禁用/启用保存按钮 3/如果我遵循并使用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
insertNewObjectForEntityForName
,它是有效的,但有一个微妙的问题
即使Controller2中的textfield为空,也会创建一个空行。这是因为当将数据分配给Controller2时,为了在Controller2中显示使用所述子类函数从NSManagedObject子类进行的计算,需要实例化子类。它基本上是在ManagedObjectContext中插入一个实体。但如果controller2中的textfield为空,则我希望显示数据计算,但在用户点击save时完成检查之前,尚未将其插入managedobjectcontext
有没有一种方法可以解决这个问题,而不必创建两个类:
- 一个普通的非CoreData类,其所有函数都使用静态方法调用来创建另一个类的实例,该类是
的实际子类NSManagedObject
- 来自上述类的NSManagedObject映射数据的子类
多谢各位 初始化托管对象类时,可以为上下文传递nil。只需确保在准备好后插入对象,并且在进行计算时不要试图依赖任何需要设置上下文的内容(可能您已经不需要了,因为它是基于数据的)。。。。如果用户可以取消整个视图控制器,则可以使用子上下文(以及所有伴随的复杂性),只有在需要时才保存给家长。@Wain感谢您的回复-事实上,计算不依赖于上下文。@stevesilva我从未使用过这种方法,但可以理解它的复杂性,所以不希望使用这种方法。nil上下文方法似乎更容易,因此目前将继续使用它。谢谢你们两位!!