我正在使用核心数据。我有一个具有Date类型属性的实体。有没有办法将默认值设置为当前日期? (比如输入'CURRENTDATE'或属性的默认值?)
谢谢
答案 0 :(得分:34)
您可以在模型中使用“now”,但Core Data会在编译时评估它,而不是运行时。您将获得存储在模型默认值中的编译日期,这可能不是您想要的:
http://iphonedevelopment.blogspot.com/2009/07/core-data-default-dates-in-data-model.html
确保当前日期的默认属性值的最可靠方法是覆盖NSManagedObject子类中的-awakeFromInsert
并在那里分配当前日期。
- (void) awakeFromInsert
{
[super awakeFromInsert];
self.date = [NSDate date];
// or [self setPrimitiveDate:[NSDate date]];
// to avoid triggering KVO notifications
}
注意:如果您正在使用嵌套的托管对象上下文(或UIManagedDocument),则上述操作将无法按预期工作。此建议仅适用于使用单个托管对象上下文时。