在 class 中包含 NSDateFormatter 的问题

Issue with including NSDateFormatter in a class

我正在尝试在笔记中添加时间 Class 但收到错误消息。

在 class 的笔记条目中包含时间的正确方法是什么?

以下是内嵌注释的错误消息:

class noteTime{
var timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "h:mm a"  //ERROR: Expected Declaration
timeFormatter.AMSymbol = "AM"
timeFormatter.PMSymbol = "PM"

var timeString = timeFormatter.stringFromDate(NSDate()) 
//ERROR: Instance member 'timeFormatter' cannot be used on type 'noteTime'
}

要获取时间戳,请使用闭包来分配值。

class NoteTime { // class names are supposed to start with a capital letter

  let timeString : String  = {
    let formatter = NSDateFormatter()
    formatter.dateFormat = "h:mm a"
    formatter.AMSymbol = "AM"
    formatter.PMSymbol = "PM"
    return formatter.stringFromDate(NSDate())
  }()
}

现在,每次创建实例时,时间戳都会在 timeString.

中保存为常量 (let!)

这是一种可能的解决方案(在 Swift 3.0 中):

class NoteTime {
    var timeFormatter : DateFormatter = {
        let formatter = DateFormatter()
        formatter.dateFormat = "h:mm a"
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"

        return formatter
    }()

    var timeString : String {
        get {
            return timeFormatter.string(from: Date())
        }
    }
}

这会设置一次日期格式化程序。然后每次访问 timeString 属性 时,您都会根据需要格式化当前时间。