gpt4 book ai didi

NSManagedObjecgt 的 iOS CoreData 自定义子类化

转载 作者:行者123 更新时间:2023-11-28 06:50:44 25 4
gpt4 key购买 nike

我有一个带有表单数据条目的 Controller1。然后,在模型中进行计算;对名为 Controller2 的详细 Controller 进行了 segue。我像往常一样遵循 NSManagedObject 的子类化来为计算指定自定义方法。

我已经阅读了其他关于此的 SO 线程,但没有一个解决这个特定场景。

1/当用户填写表单数据并点击一个按钮时,它会转到 Controller2,显示对输入和传入的数据的一些计算。到目前为止一切顺利。计算是通过模型类中的函数完成的。

2/这个 Controller2 有一个文本框。如果此字段中有有效文本,用户应该能够保存数据。如果文本字段为空,用户将无法保存数据。暂时忽略保存按钮的 UI 禁用/启用。

3/如果我跟随Custom initializer for an NSManagedObject并使用它工作的 insertNewObjectForEntityForName,但有一个微妙的问题。

即使 Controller2 中的文本字段为空,这最终也会创建一个空行。这是因为当一个人将数据分配给 Controller2 时,为了使用所述子类函数从 NSManagedObject 子类显示 Controller2 中的计算,需要实例化子类。这基本上将一个实体插入到 ManagedObjectContext 中。但是,如果 controller2 中的文本字段为空,我想显示数据计算,但尚未插入到 managedobjectcontext 中,直到稍后在用户点击保存时完成检查。

有没有办法解决这个问题而不必创建 2 个类:

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

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

这会很痛苦,因为来自函数的数据必须在 UI 中显示和存储,只有存储是在某些表单数据存在的条件下完成的?

谢谢。

最佳答案

当您初始化托管对象类时,您可以为上下文传递 nil。只需确保稍后在准备就绪时插入对象,并且在进行计算时不要尝试依赖任何需要设置上下文的东西(大概你已经不这样做了,因为它是基于数据的)。

关于NSManagedObjecgt 的 iOS CoreData 自定义子类化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34985826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com