在 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
属性 时,您都会根据需要格式化当前时间。
我正在尝试在笔记中添加时间 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
属性 时,您都会根据需要格式化当前时间。