我想保存;检索当前时间(今天)或在Core Data中创建的注释的日期
请指导我如何做到这一点。
答案 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
中单击要创建默认日期的实体。在数据模型检查器下,将代码生成从“类定义”更改为“手动/无”:
然后从菜单栏中单击Editor -> Create NSManagedObject Subclass...
并创建两个Swift类:Note+CoreDataClass.swift
和Note+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
将获得当前日期/时间的默认日期。