如何保存创建Core Data对象的日期和时间

时间:2011-01-03 11:01:29

标签: iphone cocoa-touch core-data

我想保存;检索当前时间(今天)或在Core Data中创建的注释的日期

请指导我如何做到这一点。

4 个答案:

答案 0 :(得分:51)

通过覆盖-awakeFromInsert方法,您可以让自定义NSManagedObject子类在插入上下文时立即设置属性:

@interface Person : NSManagedObject
@property (nonatomic, copy) NSDate *creationDate; // modeled property
@end

@implementation Person
@dynamic creationDate; // modeled property

- (void)awakeFromInsert
{
    [super awakeFromInsert];

    self.creationDate = [NSDate date];
}
@end

请注意,上面的creationDate是Core Data属性类型“date”的建模属性,因此其访问器方法是自动生成的。一定要适当地设置实体的自定义NSManagedObject类名。

答案 1 :(得分:10)

创建名为Note的Core Data实体,为其指定一个名为的属性 timeStamp 将其设置为键入 日期

创建新笔记时,请指定当前时间:

[note setTimeStamp:[NSDate date]];

坚持注意,就是它。

答案 2 :(得分:2)

您的Note实体具有created属性?

将默认值设置为now()

修改

now()设置为默认值意味着它将使用构建时间,而不是当前时间。如果要正确设置它 - 您需要使用NSManagedObject子类。

答案 3 :(得分:1)

只需使问题与Swift保持最新,请在xcdatamodelid中单击要创建默认日期的实体。在数据模型检查器下,将代码生成从“类定义”更改为“手动/无”:

enter image description here

然后从菜单栏中单击Editor -> Create NSManagedObject Subclass...并创建两个Swift类:Note+CoreDataClass.swiftNote+CoreDataProperties.swift

打开Note+CoreDataClass.swift文件并添加以下代码:

import Foundation
import CoreData

@objc(Note)
public class Note: NSManagedObject {
    override public func awakeFromInsert() {
        super.awakeFromInsert()
        self.creationDate = Date() as NSDate
    }
}

现在creationalDate将获得当前日期/时间的默认日期。