无法将类型为“NSDate”的值分配给“String?”类型的值

时间:2015-07-14 20:45:44

标签: ios string swift nsdate

我正在快速教自己,我仍然很新但我决定制作一个简单的应用程序,按下按钮打印当前时间。 viewcontroller文件中的代码如下:

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    @IBOutlet weak var LblTime: UILabel!
    @IBAction func BtnCalltime(sender: AnyObject) {
            var time = NSDate()
            var formatter = NSDateFormatter()
            formatter.dateFormat = "dd-MM"
            var formatteddate = formatter.stringFromDate(time)
            LblTime.text = time
    }

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

我遇到了问题:

LblTime.text = time

我一直收到错误:

  

无法将类型为“NSDate”的值分配给“String?”类型的值

我尝试过使用:

lblTime.text = time as! string?

lblTime.text = time as! string

但它仍然不起作用,我会非常感谢一些帮助。 感谢

3 个答案:

答案 0 :(得分:7)

您需要使用格式化程序中的值。

@IBAction func BtnCalltime(sender: AnyObject) {
    var time = NSDate()
    var formatter = NSDateFormatter()
    formatter.dateFormat = "dd-MM"
    var formatteddate = formatter.stringFromDate(time)
    LblTime.text = formatteddate
}

答案 1 :(得分:3)

你已经从NSDate创建了字符串,你只是没有使用它。

lblTime.text = formatteddate

答案 2 :(得分:0)

日期现在比NSDate更受欢迎。它是一个叠加类,意味着它们都可以工作,但是Date但有许多优点,this answer lists其中一些。

以下是使用Date而不是NSDate将日期格式化为字符串的方法。

var time = Date()
var formatter = DateFormatter()
formatter.dateFormat = "MMM d yyyy, h:mm:ss a"
let formattedDateInString = formatter.string(from: time)

dateLabel.text = formattedDateInString

获取格式化程序字符串的好网站是http://nsdateformatter.com/ 我不知道"MMM d yyyy, h:mm:ss a"会等于Mar 1, 7:02:35 AM,但网站会让它变得简单。