Ios Swift将NSTIMEINEVAL转换为NSDate

Ios Swift将NSTIMEINEVAL转换为NSDate,ios,core-data,swift,nsdate,Ios,Core Data,Swift,Nsdate,我一直在学习Objective-C教程,该教程能够将NSTimeInterval对象强制转换为NSDate对象 本课程使用CoreData,并将文章的日期存储为NSTimeInterval,稍后我们将检索该时间间隔,并将其设置为格式化的日期字符串,以在UITableVIewController中显示为节标题 class DiaryEntry: NSManagedObject { @NSManaged var date: NSTimeInterval @NSManaged var body: S

我一直在学习Objective-C教程,该教程能够将NSTimeInterval对象强制转换为NSDate对象

本课程使用CoreData,并将文章的日期存储为NSTimeInterval,稍后我们将检索该时间间隔,并将其设置为格式化的日期字符串,以在UITableVIewController中显示为节标题

class DiaryEntry: NSManagedObject {

@NSManaged var date: NSTimeInterval
@NSManaged var body: String
@NSManaged var imageData: NSData
@NSManaged var mood: Int16
@NSManaged var location: String

func sectionName() -> String {
    let date = NSDate().dateByAddingTimeInterval(self.date)
    let f = NSDateFormatter()
    f.dateFormat = "MMM yyy"

    return f.stringFromDate(date)
}

}
主要与线路有关:

let date:NSDate = NSDate().dateByAddingTimeInterval(self.date)
现在实际上是把设定的日期加到当前日期上,这不是我想要的行为


如何将
self.date
变量强制转换为SWIFT中的
NSDate
对象?

有一个
NSDate
初始值设定项,需要
NSTimeInterval

init(timeIntervalSinceReferenceDate ti: NSTimeInterval)
所以,只要做:

var date = NSDate(timeIntervalSinceReferenceDate: 123)

这段代码真的很混乱

时间间隔不是日期。日期是一个时间点。时间间隔是两个时间点之间的秒差。每当您有一个时间间隔时,您就会遇到这样一个问题:“这是哪两个日期之间的秒数?您正确地认识到,将存储在数据库中的时间间隔添加到NSDate()不太可能给出有用的结果,因为10秒后执行的同一调用将给出不同的日期。”

帖子的日期最有可能存储为NSDate对象。核心数据可以很好地处理NSDate对象。如果要存储时间间隔,帖子的日期必须转换为自某个固定引用日期起的时间间隔;例如,可以使用“TimeIntervalsIncerenceDate”来执行此操作“。如果您这样做,我强烈建议您不要调用变量“date”,而是调用类似“secondsSinceReferenceDate”的东西,这样可以清楚地知道在给定日期时存储什么,以及如何将该数字转换回NSDate


(之所以称之为“secondsSinceReferenceDate”,是因为有大量代码试图存储毫秒或纳秒,并且有大量代码存储自历元(1970年1月1日)以来的时间间隔,因此如果有人阅读您的代码,只要看一下变量名,就可以立即知道这些数字的含义,这真的很好).

谢谢Peter,由于某种原因,我的XCode的intellisense没有响应,在我第一次打开构造函数时没有看到这些选项。@Alex你不需要intellisense.:)@兰斯,我可能知道得更清楚,但我才刚刚开始使用iOS——需要用文档对自己进行aquatint;)请注意,您使用的是指定的初始值设定项
init(timeintervalscenereferencedate ti:NSTimeInterval)
。这是正确的,但与答案的第一句不匹配。@PeterPeiGuo:我不是这个意思,我(希望)已经修正了答案。谢谢gnasher。我也很困惑,为什么我所遵循的教程的作者没有选择nsdate作为两者,他甚至从来没有澄清他的理由,但由于这是我第一次使用swift和core数据,我认为可能会有好处,谢谢你澄清我的怀疑