找不到将 NSDate 转换为字符串的正确逻辑

Cannot find the right logic to translate the NSDate to string

我是 swift 的新手,发现这个很难,所以说它不能解析为变量,因为它不是字符串。

我搜索并找到了一些东西,但它与我的代码类型无关,所以我恳请它:)

    let dateFormatterGet = DateFormatter()
    dateFormatterGet.dateFormat = "yyyy-MM-dd HH:mm:ss"

    let dateFormatterPrint = DateFormatter()
    dateFormatterPrint.dateFormat = "MMM dd,yyyy"

    let date: NSDate? = dateFormatterGet.date(from: currentVechicle.LastCommunicationDate!) as NSDate?
    print(dateFormatterPrint.string(from: date! as Date))



    cell.perditsuarOutlet.text = date    // Error: Cannot assign value of type 'NSDate?' to type 'String?'
  • 你的 date 常量是一个 NSDate。

  • 并且单元格 text 属性 是一个字符串。

您不能将两者配对,因为它们不是同一类型。

由于您无法更改单元格 text 类型,因此您只有 1 个选项。您必须将 NSDate 转换为字符串。

我建议看一下 Paul Hudsons 100 Days of Swift。当我刚开始的时候,这是一个很棒的资源。 link 我提供了关于他第 1 天关于字符串的课程的要点

继续努力。我保证它会变得更好:)

您正在打印正确的 String 值,但是将类型为 NSDate? 的变量 date 分配给 text 属性,这应该是String.

尝试这样做:

let dateString = dateFormatterPrint.string(from: date! as Date)
cell.perditsuarOutlet.text = dateString

一条建议:不要在此处强制展开 (date! as Date)。相反,包括一种方法来处理“可选”NSDate? 变量的 nil 值。一种方法如下所示:

if let date = dateFormatterGet.date(from: currentVechicle.LastCommunicationDate!) as NSDate? {
  cell.perditsuarOutlet.text = dateFormatterPrint.string(from: date as Date)
} else {
  cell.perditsuarOutlet.text = "Empty or invalid date"
}

我知道这看起来开销很大,但为了避免崩溃是值得的...