gpt4 book ai didi

由于验证规则上下文导致 iOS 核心数据保存 MOC 问题

转载 作者:行者123 更新时间:2023-11-29 02:11:17 30 4
gpt4 key购买 nike

我将 Magical Record 与 Core Data 框架结合使用,但在从我的 MOC 中保存已删除的对象时遇到了问题。我有一个 Patient NSManagedObject,它有一组 Notes NSManagedObjects,所以 MO 看起来像这样:

患者.h

@interface Patient : NSManagedObject
@property (nonatomic, retain) NSSet *notes;
@end

@interface Patient (CoreDataGeneratedAccessors)
- (void)addNotes:(NSSet *)values;
- (void)removeNotes:(NSSet *)values;
@end

注释.h

@interface Note : NSManagedObject
@property (nonatomic, retain) NSDate * creationDate;
@property (nonatomic, retain) NSString * noteText;
@property (nonatomic, retain) Patient *patient;
@end

我还有验证规则来确保 noteText 属性不为 null 或为空。现在在我的 View Controller 中的 viewDidLoad 方法中,我正在使用以下方法创建一个新的笔记管理对象:

Note* lNote = [Note MR_createInContext:localContext];

因此,一旦 View 加载,便会立即创建注释,准备好通过 UITextView 修改 noteText 属性。如果用户没有输入任何文本并按下保存验证触发器并阻止保存,这一切都很好。

当我单击同一个 View Controller 中的笔记存档文件夹按钮时出现问题,一旦按下,它会显示一个模态视图 Controller 并允许用户加载或删除笔记,因为我正在尝试删除一个从此存档屏幕上注释,我必须回滚我在 viewDidLoad 方法中创建的上一个注释,以便我可以删除注释并保存默认上下文,否则当我尝试保存已删除的对象时,noteText 属性的验证规则从 MOC 开始。

我注意到这更像是一个逻辑或工作流类型的问题,但我想防止在 defaultContext 中创建的笔记回滚,并且仍然能够使用已删除的笔记保存 defaultContext。

我尝试过使用不同的 MOC,但出现了更多问题,一个 MOC 用于检索患者,另一个用于创建笔记。

最佳答案

创建不同的托管对象上下文是您问题的正确解决方案。 MOC 是一个“暂存器”,在您描述的场景中您需要两个暂存器。您实际上是在用另一个笔记编辑过程打断笔记创建过程。

话虽如此,您可以只删除空笔记并在其他 Controller 被解散时重新创建它。您还可以将注释文本设置为 @""。有各种各样的 hacky 方法可以实现这一点,但使用两个 MOC 是最干净的方法。

关于由于验证规则上下文导致 iOS 核心数据保存 MOC 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261201/

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