()不能转换为String

时间:2015-01-12 14:06:35

标签: swift

我正在尝试制作一个简单的时钟应用程序而且我遇到了一个问题。

@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。知道为什么会这样吗?

2 个答案:

答案 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()