在类中包含NSDateFormatter的问题

时间:2016-10-25 13:44:45

标签: swift class nsdate nsdateformatter

我正在尝试在Note类中添加时间,但收到错误消息。

http://imgur.com/hyRHj30

在课程中记录时间的正确方法是什么?

以下是内联评论的错误消息:

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'
}

2 个答案:

答案 0 :(得分:1)

要获取时间戳,请使用闭包来指定值。

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())
  }()
}

现在,每次创建实例时,时间戳都会在let中保存为常量(timeString!)。

答案 1 :(得分:0)

这是一个可能的解决方案(在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属性时,都会根据需要格式化当前时间。