有个语法问题,函数是可以有返回值的,下面一个获取服务器时间的代码,我想问题的是,这个函数如何将得到的时间 timeString 这个值返回出来呢
func getServerTimeTamp () {
dispatch_async(dispatch_get_main_queue()) {
let dateFormatter = NSDateFormatter()
//时间格式
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
// 调用接口,获取服务器时间
let timeString = Bmob.getServerTimestamp()
}
}
加一个返回值 func getServerTimeTamp () -> String
你写的函数都没有返回值
函数返回值是即时的,而你获取时间是不即时的,所以不能通过函数返回值进行返回,只能通过闭包返回。
func getServerTimeTamp(closure: (timeString: String) -> Void) {
dispatch_async(dispatch_get_main_queue()) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let timeString = Bmob.getServerTimestamp()
closure(timeString)
}
}
首先不知道为什么要跑到主线程去处理数据,
一般会传入回调函数或者用Delegate来实现多线程同步
我写了一个简单的闭包的例子,题主可以作为参考
func makeMulti(multi: Int) -> (Int) -> Int { return { (num: Int) -> Int in return (num * multi) } } let doubler2 = makeMulti(2) print(doubler2(10))