Avt*_*Avt 13 core-data nsdate ios nsvaluetransformer swift
我的数据库模型中有很多日期字段.CoreData允许使用NSDate或TimeInterval来保存日期,具体取决于"使用标量类型"选项.
但是这两个选项对我都不好,因为我想将日期用作Date对象.由于NSDate不能隐式转换为Date我必须Date在我的NSManagedObject类中转换/转换值或在其中实现许多自定义setter/getter.
我试过使用ValueTransformer但它不能用于非@objc类Date.
那么有一种简单的方法来保存和Date从CoreData 获取值吗?
Tom*_*ton 31
是的,但你可能不喜欢它.如果使用Core Data"Date"类型声明属性并让Xcode NSManagedObject为您生成子类,则该属性将是@NSManagedtype 的属性NSDate.正如你已经想到的那样,你必须Date与NSDate自己打交道.
如果你没有让Xcode中产生的子类,你(在Xcode 8组"代码生成"为"手动/无"),你可以声明核心数据"日期"属性作为像
@NSManaged public var timestamp: Date?
Run Code Online (Sandbox Code Playgroud)
它会起作用.您可以读取和写入Date值,Core Data将做正确的事情.但是你完全负责NSManagedObject子类中的代码.你必须创建整个班级.如果更新Core Data模型,则还必须更新类.这看起来是否值得取决于你,但它是目前似乎存在的唯一解决方案.
更新:在Xcode 9中,生成的代码使用Date,因此不再需要这样做.