9
所以我刚刚更新到Xcode中8和转换我的雨燕2.3的代码斯威夫特3,和斯威夫特3只全部转换NSDate
到Foundation.Date
的NSDate从雨燕2.3,从斯威夫特3转换日期
而且我有一个extension
为NSDate
,现在被称为Foundation.Date
,它看起来像这样:
extension NSDate
{
var firstDayOfTheMonth:NSDate
{
var date: NSDate?
NSCalendar.currentCalendar().rangeOfUnit(.Month, startDate:&date , interval: nil, forDate: self)
return date!
}
}
和SWIFT 3它转换成这样:
extension Foundation.Date
{
var firstDayOfTheMonth:Foundation.Date
{
var date: Foundation.Date?
(Calendar.current as NSCalendar).range(of: .month, start:&date , interval: nil, for: self)
return date!
}
}
这里的问题是,Xcode建议我这样做:Cannot convert value of type 'Date?' to expected argument type 'NSDate?'
并删除&
。
所以,我改变它和函数现在看起来是这样的:
extension Foundation.Date
{
var firstDayOfTheMonth:Foundation.Date
{
var date: Foundation.Date?
(Calendar.current as NSCalendar).range(of: .month, start:date as NSDate?, interval: nil, for: self)
return date!
}
}
但现在的Xcode说Cannot convert value of type 'Date?' to type 'NSDate?' in coercion
我怎样才能使这项工作?
'rangeOfUnit'是Swift 3中的'dateInterval',参见http://stackoverflow.com/a/39527482/1187415。 –
你是对的Martin R,谢谢。 –