将NSDate的默认值设置为Today

时间:2010-08-13 11:08:54

标签: iphone objective-c cocoa-touch core-data

在我的Core Data模型中,我有一个属性是NSDate,用户可以更改它,它是可选的。 我想将此属性的默认值设置为今天,我在核心数据模型中看不到这样做,因此我将NSManangedObject子类化并将此代码添加到实现文件中。

- (NSDate *)date {
    return [NSDate date];
}

这似乎有效但日期总是今天的日期,即使用户更改它,它也会回到今天。如果昨天创建了一个对象,它会将日期更改为今天,以便所有对象的日期都是今天。

如何解决此问题,用户今天的默认日期是否仍然可以更改?

2 个答案:

答案 0 :(得分:9)

“date”也是该物业的名称吗?如果是这样,那么您的代码将始终返回当前日期,因为您将覆盖属性方法。

要为属性设置自定义默认值,可以覆盖awakeFromInsert方法。在该方法中,将属性值设置为[NSDate date]。有关此方法的说明,请参阅NSManagedObject的文档。

答案 1 :(得分:2)

您可以将模型内部的默认值设置为“TODAY”或“NOW”,并在创建该实体的实例时自动设置。