【发布时间】:2011-04-15 17:57:20
【问题描述】:
我正在使用核心数据。我有一个具有日期类型属性的实体。有没有办法可以将默认值设置为当前日期? (比如在属性的默认值中输入“CURRENTDATE”或其他内容?)
谢谢
【问题讨论】:
我正在使用核心数据。我有一个具有日期类型属性的实体。有没有办法可以将默认值设置为当前日期? (比如在属性的默认值中输入“CURRENTDATE”或其他内容?)
谢谢
【问题讨论】:
您可以在模型中使用“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),上述内容将无法按预期工作。此建议仅适用于使用单个托管对象上下文时。
【讨论】:
awakeFromInsert: Invoked automatically by the Core Data framework when the receiver is first inserted into a ***managed object context***.在网上搜索更多,我还发现这个链接在谈论这个问题,当 NSManagedObject 首次插入上下文而不是存储时调用 awakeFromInsert:mikeabdullah.net/an--awakefrominsert-gotcha.html
awakeFromInsert 的使用。我站得更正。感谢阿卜杜拉的参考。如果我以前读过它,我会忘记它。