【发布时间】:2011-10-09 15:18:36
【问题描述】:
我在核心数据数据库中有一些计算值,我需要在保存之前对其进行更新。基本上我对一些实体进行编号以简化它们之间的导航。
目前我正在观察NSManagedObjectContextWillSaveNotification 并尝试在那里进行此编号。我所做的更改似乎已保存,但撤消管理器似乎仍有一些修改。即使托管对象上下文表明它没有(hasChanges),这也会使文档看起来像是发生了变化(关闭按钮上的标记)。如果我撤消一次,文档看起来没有任何变化,但托管对象上下文却反过来。
撤消管理器是否以某种方式将自身重置在错误的位置,还是我做错了什么?
更新
我在其中进行重新编号的有点混淆的代码如下所示:
- (void)managedObjectContextWillSave:(NSNotification *)notification
{
// Force the content view controller to save any pending changes.
[_contentViewController saveChanges];
NSArray *itemSortDesc = [self sortDescriptorsForSomeItem];
NSArray *items = [SomeItem findAllObjectsInContext:self.managedObjectContext
andSortBy:itemSortDesc];
NSUInteger i = 0;
for (SomeItem *i in items)
{
i.uid = [NSNumber numberWithUnsignedInteger:i++];
}
}
_contentViewController 包含一个文本字段,该字段将被解析为多个 SomeItem 实例。
【问题讨论】:
-
您能发布处理该事件的代码吗?
标签: cocoa nsmanagedobjectcontext nsundomanager nspersistentdocument