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

5

我正在自学Swift,还是一个新手,但我决定做一个简单的应用程序,在按下按钮时打印当前时间。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

但是它仍然不能正常工作,如果能得到一些帮助,我会非常感激。 谢谢

这篇文章会对你有所帮助:https://dev59.com/R2015IYBdhLWcg3w9wp1 - wm.p1us
3个回答

8

你需要使用格式化器中的一个值。

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

3

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

lblTime.text = formatteddate

0

现在推荐使用Date而非NSDate。这是一个覆盖类,意味着两者都可以工作,但是Date具有许多优点,此答案列举了其中一些。

下面是使用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,但这个网站让它变得简单。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接