ios - swift 闭包返回值

 雅枝建彰3 发布于 2022-10-29 04:12

有个语法问题,函数是可以有返回值的,下面一个获取服务器时间的代码,我想问题的是,这个函数如何将得到的时间 timeString 这个值返回出来呢

func getServerTimeTamp () {
     dispatch_async(dispatch_get_main_queue()) { 
         let dateFormatter = NSDateFormatter()
         //时间格式
         dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
         
         // 调用接口,获取服务器时间
         let timeString = Bmob.getServerTimestamp()
     }
}
5 个回答
  • 加一个返回值 func getServerTimeTamp () -> String

    2022-10-30 07:50 回答
  • 你写的函数都没有返回值

    2022-10-30 07:54 回答
  • 函数返回值是即时的,而你获取时间是不即时的,所以不能通过函数返回值进行返回,只能通过闭包返回。

    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)
         }
    }
    2022-10-30 07:59 回答
  • 首先不知道为什么要跑到主线程去处理数据,
    一般会传入回调函数或者用Delegate来实现多线程同步

    2022-10-30 08:01 回答
  • 我写了一个简单的闭包的例子,题主可以作为参考

    func makeMulti(multi: Int) -> (Int) -> Int {
        return { 
            (num: Int) -> Int in 
                return (num * multi)
        }
    }
    let doubler2 = makeMulti(2)
    print(doubler2(10))
    2022-10-30 08:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有