Ios Swift 2.0:无法将NSDateComponents转换为NSCalendarUnit

Ios Swift 2.0:无法将NSDateComponents转换为NSCalendarUnit,ios,swift,nscalendar,Ios,Swift,Nscalendar,以下是接收问题代码的代码行: let CompetitionDayDifference = userCalendar.components (dayCalendarUnit, fromDate: currentDate!, toDate: competitionDay, options: nil) 发行代码: let CompetitionDayDifference = userCalendar.components (dayCalendarUnit, fromDate: currentDat

以下是接收问题代码的代码行:

let CompetitionDayDifference = userCalendar.components (dayCalendarUnit, fromDate: currentDate!, toDate: competitionDay, options: nil)
发行代码:

let CompetitionDayDifference = userCalendar.components (dayCalendarUnit, fromDate: currentDate!, toDate: competitionDay, options: nil)
无法将NSDateComponents类型的值转换为预期参数 NSCalendarUnit型

附加代码:

let userCalendar = NSCalendar.currentCalendar()


let competitionDate = NSDateComponents()
competitionDate.year = 2015
competitionDate.month = 6
competitionDate.day = 21
competitionDate.hour = 08
competitionDate.minute = 00
let competitionDay = userCalendar.dateFromComponents(competitionDate)!


// Here we compare the two dates
competitionDay.timeIntervalSinceDate(currentDate!)


let dayCalendarUnit = calendar.components([NSCalendarUnit.Day, NSCalendarUnit.Hour, NSCalendarUnit.Minute], fromDate: date)

//here we change the seconds to hours,minutes and days
let CompetitionDayDifference = userCalendar.components (dayCalendarUnit, fromDate: currentDate!, toDate: competitionDay, options: [])

根据错误,您的
dayCalendarUnit
是一个NSDateComponents类型的变量。您应该传递一个
NSCalendarUnit
。从Swift 2.0开始,您也无法传递选项参数的
nil
,因此您需要传递一个空选项集:

let CompetitionDayDifference = userCalendar.components(NSCalendarUnit.Day, fromDate: currentDate!, toDate: competitionDay, options: [])

如果希望有人帮助您,您可能需要包含整行代码以及所用变量的声明/定义语句。可能是的副本。@MartinR顺便说一句,他似乎在为第一个参数传递错误的类型(除了选项问题之外),如果您想向最终用户显示这段经过的时间,您可以跳过一些内容,直接转到
NSDateComponentsFormatter
,例如
let formatter=NSDateComponentsFormatter();formatter.unitsStyle=.Full;formatter.allowedUnits=[.Day、.Hour、.Minute];让string=formatter.stringFromDate(firstDate,toDate:secondDate)