代码之家  ›  专栏  ›  技术社区  ›  mica

CoreData是否有自动创建日期和/或更新日期机制?

  •  0
  • mica  · 技术社区  · 4 年前

    我想保存&检索在核心数据中创建注释的时间戳

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

    0 回复  |  直到 2 年前
        1
  •  51
  •   Chris Hanson    14 年前

    您可以通过重写来让您的自定义NSManagedObject子类在插入上下文后立即设置属性 -awakeFromInsert 方法:

    @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类名。

        2
  •  11
  •   RickiG    14 年前

    创建一个名为Note的核心数据实体,并为其赋予一个称为 时间戳 将其设置为类型 日期 .

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

    [note setTimeStamp:[NSDate date]];
    

    坚持笔记,就是这样。

        3
  •  4
  •   Elijah    2 年前

    为了让这个问题与Swift保持同步,在 xcdatamodelid 单击要创建默认日期的实体。在数据模型检查器下,将Codegen从“类定义”更改为“手动/无”:

    enter image description here

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

    打开 注+核心数据类.swift 文件并添加以下代码:

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

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

        4
  •  2
  •   Elijah    2 年前

    你有一个 Note 实体a created 属性?

    将默认值设置为 now()

    编辑

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