在操场上,此代码可以很好地工作,并且我可以完全按照期望的方式获得预期的输出,但是当我将其放入Xcode项目中时,我的 startDate 说
会收到3条警告无法将类型为“日期”的值转换为预期的参数类型为“日期”
这是我的代码:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM, dd yyyy"
let date = dateFormatter.date(from: "June, 27 2018")
if let date = date {
let calendar = Calendar(identifier: .gregorian)
var startDate : Date = Date()
var interval : TimeInterval = 0
if calendar.dateInterval(of: .weekOfYear, start: &startDate, interval: &interval, for: date) {
print(startDate)
let daysToAdd = 6
var dateComponent = DateComponents()
dateComponent.day = daysToAdd
let futureDate = Calendar.current.date(byAdding: dateComponent, to: startDate)
let dateFormatter1 = DateFormatter()
dateFormatter1.dateFormat = "MMMM dd-"
let dateFormatter2 = DateFormatter()
let startWeek = dateFormatter1.string(from: startDate)
dateFormatter2.dateFormat = "dd"
let endWeek = dateFormatter2.string(from: futureDate!)
results = "\(startWeek)\(endWeek)"
}
}
答案 0 :(得分:3)
输入Date
上的绿色文字
var startDate : Date = Date()
表示您拥有自己的名为Date
的类/结构。无法将其转换为Foundation.Date
。
首先创建这种名称冲突不是一个好主意,但是您可以使用全名来解决它:
var startDate = Foundation.Date()
答案 1 :(得分:0)
var startDate = Date()
我遇到了同样的问题,并使用上面的代码修复了该问题。希望对你有用。
答案 2 :(得分:0)
用一个例子来说明这个问题。
这将产生错误,因为虽然我确实想在Result对象中返回一个Date,但是我不需要在此函数的接口处创建一个名为Date的泛型。那是我的错误。
func daysAgo<Date>(_ dayCount: Int) -> Result<Date, CommonErrors> {
let date: Date? = Calendar.current.date(byAdding: .day, value: dayCount, to: self)
return Result(success: date, failure: .initFailed)
}
以下代码解决了我的问题:
func daysAgo(_ dayCount: Int) -> Result<Date, CommonErrors> {
let date: Date? = Calendar.current.date(byAdding: .day, value: dayCount, to: self)
return Result(success: date, failure: .initFailed)
}