【发布时间】:2011-03-08 18:18:44
【问题描述】:
我有一个 NSManagedObject 派生类 OrderMO,它有一个 NSDate 类型的属性 OrderDate。我希望 OrderDate 的默认值是该月的第一个星期一,第一个月还没有与之关联的订单。
为此,我将覆盖 NSManagedObject 的 awakeFromInsert 函数并像这样设置 OrderDate 的值:
- (void) awakeFromInsert
{
[super awakeFromInsert];
[self setValue:[self getNextOrderDate] forKey:@"OrderDate"];
}
自定义函数 getNextOrderDate 计算适当的日期并返回它。问题是 getNextOrderDate 调用 executeFetchRequest 在 awakeFromInsert 调用期间显然是一个禁忌。我试过做this article 中描述的事情,但它并没有解决我的问题。在那篇文章中,通过调用 self performSelector 以延迟对 executeFetchRequest 的调用,直到 NSManagedObject 初始化之后,问题得以解决。就我而言,我只得到 2 个垃圾行。
我考虑对我的 Orders ArrayController 进行子类化以覆盖 add 函数,但也不知道该在那里做什么。
谁能告诉我基于现有的相同实体类型的 NSManagedObjects 初始化 NSManagedObject 属性的正确方法,在同一个数组中,其值取决于现有对象的值?
【问题讨论】:
标签: objective-c cocoa core-data