我正在尝试制作一个简单的时钟应用程序而且我遇到了一个问题。
@IBAction func toggle(sender: UISwitch) {
func formatADate() {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .ShortStyle
dateFormatter.dateFormat = "hh:mm:ss a"
let date = NSDate()
let output = dateFormatter.stringFromDate(date)
println(output)
}
let clockString: String = formatADate()
clockFace.hidden = false
clockFace.text = clockString
}
但我一直收到错误() is not convertible to String
。知道为什么会这样吗?
答案 0 :(得分:5)
formatADate
函数声明为不带参数并返回void(即没有),而在此行中
let clockString: String = formatADate()
您将其返回值(void)分配给字符串。
您只需将该函数声明为返回字符串:
func formatADate() -> String {
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .ShortStyle
dateFormatter.dateFormat = "hh:mm:ss a"
let date = NSDate()
let output = dateFormatter.stringFromDate(date)
println(output)
return output
}
我假设output
是您希望它返回的 - 如果不是,则相应地进行更改。
答案 1 :(得分:3)
您的formatADate
函数应定义为返回String
func formatADate()-> String { // use -> to show returned type
var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .ShortStyle
dateFormatter.dateFormat = "hh:mm:ss a"
let date = NSDate()
let output = dateFormatter.stringFromDate(date)
return output // return string type
}
let clockString: String = formatADate()