我正在尝试在Note类中添加时间,但收到错误消息。
在课程中记录时间的正确方法是什么?
以下是内联评论的错误消息:
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'
}
答案 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
属性时,都会根据需要格式化当前时间。