首页 > 解决方案 > 在 Swift 4 中创建简单的倒计时日期应用程序时出错

问题描述

因此,我目前正在开发一个可以对特定日期进行简单倒计时的应用程序;但是,我收到此错误:“类型值 '(NSCalendar.Unit, Date, Date [NSCalendar.Options]) -> ()' has no member 'day'”

有什么办法可以解决这个问题以完成应用程序?

class ViewController: UIViewController {
    @IBOutlet weak var CountdownText: UILabel!
    let formatter = DateFormatter()
    let userCalendar = NSCalendar.current

    let requestedComponent: NSCalendar.Unit = [
        NSCalendar.Unit.month,
        NSCalendar.Unit.day,
        NSCalendar.Unit.hour,
        NSCalendar.Unit.minute,
        NSCalendar.Unit.second,
    ]

    func printTime()
    {
        formatter.dateFormat = "MM/dd/yy hh:mm:ss a"
        let startTime = NSDate()
        let endTime = formatter.date(from: "12/03/18 2:00:00 p")

        func timeDifference (requestedComponent: NSCalendar.Unit, from: Date, to: Date, options: [NSCalendar.Options]) {}

        CountdownText.text = "\(timeDifference.day) Days \(timeDifference.minute) Minutes \(timeDifference.second) Seconds"
    }
}

标签: swift

解决方案


您正在尝试.day从您的类型中获取调用属性,function该类型没有返回任何内容。我打赌你的函数timeDifference应该在printTime函数之外的某个地方。相信你想做如下的事情:

func printTime() {
    formatter.dateFormat = "MM/dd/yy hh:mm:ss a"
    let startTime = Date()
    let endTime = formatter.date(from: "12/03/18 2:00:00 p")

    let days = timeDifference(requestedComponent: .day, from: startTime, to: endTime, options: [])
    let minutes = timeDifference(requestedComponent: .minute, from: startTime, to: endTime, options: [])
    let seconds = timeDifference(requestedComponent: .second, from: startTime, to: endTime, options: [])
    CountdownText.text = "\(days) Days \(minutes) Minutes \(seconds) Seconds"
}

func timeDifference (requestedComponent: NSCalendar.Unit, from: Date, to: Date, options: [NSCalendar.Options]) -> Int {
    var calculatedValue = 0
    // calculatings
    return calculatedValue
}

推荐阅读