我有一个对象,其属性具有在我的xcdatamodeld对象中定义的Date类型.为什么它使用NSTimeInterval生成NSManagedObject类?如何在其上设置NSDate然后让NSDate退出呢?
tee*_*yay 28
如果我在生成文件时选中"使用原始数据类型的标量属性"复选框,我会得到这个.
这是因为NSTimeInterval是伪装的双重,而NSDate是一个继承自NSObject的类.
shi*_*him 15
编辑:显然dateWithTimeIntervalSince1970只是为了NSDateFormatter.NSDate使用不同的参考NSDateFormatter,如评论中所解释的那样,2001年.对不起我的无知.
如果在NSManagedObject为实体生成子类时选择了"使用基本数据类型的标量属性" ,则它将使用标量属性(如int和float)而不是NSNumber.这包括NSDate; 它将NSDate变成一个NSTimeInterval只是一个双倍.这NSTimeInterval是自Apple使用的1970年标准时代以来的时间间隔(如果它在1970年之前它可能是负面的).
如果你需要将它转换NSTimeInterval成一个非常简单NSDate,但是如果你没有庞大的数据库,那么你可能不想打扰选择那个复选框.
要将此时间间隔转换为正常NSDate使用[NSDate dateWithTimeIntervalSince1970: timeInterval]; ,timeInterval您将从数据库中获取所需的时间间隔.这可以放在您的NSManagedObject子类中,这样当您获得该属性时,NSDate无论如何都会获得.