【发布时间】:2015-03-25 16:27:29
【问题描述】:
我将 Magical Record 与 Core Data 框架结合使用,但在从我的 MOC 中保存已删除对象时遇到了问题。我有一个病人 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
Notes.h
@interface Note : NSManagedObject
@property (nonatomic, retain) NSDate * creationDate;
@property (nonatomic, retain) NSString * noteText;
@property (nonatomic, retain) Patient *patient;
@end
我还有验证规则来确保 noteText 属性不为 null 或为空。现在在 viewDidLoad 方法的视图控制器中,我正在使用以下方法创建一个新的笔记托管对象:
Note* lNote = [Note MR_createInContext:localContext];
因此,一旦视图加载,便立即创建注释,准备好通过 UITextView 修改 noteText 属性。如果用户没有输入任何文本并按下保存,验证会触发并阻止保存,这一切都很好。
当我单击同一视图控制器中的我的笔记存档文件夹按钮时,会出现问题,一旦按下,它就会呈现一个模式视图控制器并让用户加载或删除笔记,因为我试图删除一个来自此存档屏幕的注释,我必须回滚在 viewDidLoad 方法中创建的上一个注释,以便我可以删除注释并保存默认上下文,否则当我尝试保存已删除的对象时 noteText 属性的验证规则从 MOC 开始。
我注意到这更多是逻辑或工作流类型的问题,但我想防止在 defaultContext 中创建的注释回滚,并且仍然能够保存 defaultContext 和已删除的注释。
我尝试过使用不同的 MOC,但这会带来更多问题,一个 MOC 用于检索患者,另一个 MOC 用于创建笔记。
【问题讨论】:
标签: ios objective-c core-data magicalrecord