2017-07-04 18 views
3

我做了一個簡單的倒計時應用程序,我得到這個錯誤信息:無法調用非功能類型「日曆」的值。無法調用無功能類型「日曆」的值

我需要改變什麼?

@IBOutlet weak var deteLabelOutlet: UILabel! 
    let formatter = DateFormatter() 
    let useCalendar = NSCalendar.current() 
    let requesedComponent: NSCalendar.Unit = [ 
     NSCalendar.Unit.month, 
     NSCalendar.Unit.day, 
     NSCalendar.Unit.hour, 
     NSCalendar.Unit.minute, 
     NSCalendar.Unit.second 
    ] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true) 
     timer.fire() 
    } 

    func printTime() { 
     formatter.dateFormat = "MM/dd/yy hh:mm:ss a" 
     let startTime = Date() 
     let endTime = formatter.date(from: String("12/25/16 12:00:00 a")) 

     let timeDiffrenece = useCalendar.components(requesedComponent,fromDate: startTime, toDate: endTime!, options: []) 

     deteLabelOutlet.text = "\(timeDiffrenece.month)Month \(timeDiffrenece.day) days \(timeDiffrenece.minute) minutes \(timeDiffrenece.second) seconds" 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

回答

1

在Swift 3中,current日曆不是函數。刪除括號。

反正它強烈建議使用本機結構Calendar如其他答案建議

let useCalendar = Calendar.current 

編輯:

你必須分配值的標籤,因爲當解開所有的最新組件在Swift 3中,所有日期組件都是可選的。但是,如果指定了所有相關組件,則可以強制拆開組件。

deteLabelOutlet.text = "\(timeDiffrenece.month!)Month \(timeDiffrenece.day!) days \(timeDiffrenece.minute!) minutes \(timeDiffrenece.second!) seconds" 
+0

我仍然得到了同樣的信息 –

+0

這是不可能的,如果你正在使用'Calendar.current'(**沒有括號**) – vadian