Swift 无法转换类型为';日期';到预期的参数类型';日期';

Swift 无法转换类型为';日期';到预期的参数类型';日期';,swift,Swift,在操场上,这段代码工作得很好,我得到了我想要的预期输出,但是当我把它放到我的Xcode项目中时,我得到了3个警告,我的开始日期说 无法将“Date”类型的值转换为预期的参数类型“Date” 这是我的密码: let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMMM, dd yyyy" let date = dateFormatter.date(from: "June, 27 2018") if

在操场上,这段代码工作得很好,我得到了我想要的预期输出,但是当我把它放到我的Xcode项目中时,我得到了3个警告,我的开始日期

无法将“Date”类型的值转换为预期的参数类型“Date”

这是我的密码:

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)"
        }
    }

日期上的绿色文本颜色键入

var startDate : Date = Date()
这意味着您有自己的类/结构,称为
Date
。该文件无法转换为
Foundation.Date

首先创建这种名称冲突不是一个好主意,但您可以使用全名来修复它:

var startDate = Foundation.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(u-dayCount:Int)->结果{
let date:date?=日历.current.date(通过添加:.day,值:dayCount,to:self)
返回结果(成功:日期,失败:.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)
}
func daysAgo(u-dayCount:Int)->结果{
let date:date?=日历.current.date(通过添加:.day,值:dayCount,to:self)
返回结果(成功:日期,失败:.initFailed)
}

哪行收到警告?我将您的确切代码复制到Xcode 9.4.1中,但没有收到此类错误。请发布导致您的问题的代码。是的,在swift playgrounds中我没有得到错误,但正如我在mu项目中添加它时所说的,我得到了。我发布了一个错误截图什么是Xcode版本?什么是Swift版本?您是否有自己的类/结构,也称为
Date
?在这种情况下,错误消息不清楚,我想知道我们是否应该报告一个错误,因为如果它包含两种类型的完整限定名,错误会更清楚。
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)
}