繁体   English   中英

Swift 3函数(已完成的问题

[英]Swift 3 func(completed issue

我有以下代码来创建一个解析一些json数据的函数。

func getTrackData(completed: @escaping DownLoadComplete) {
    let getDataURL = URL(string: "https://tfmx-3ba7c.firebaseio.com/")!
    Alamofire.request(getDataURL).responseJSON { response in
        let result = response.result

        if let dict = result.value as? Dictionary<String, Any> {
            if let tr = dict["tracks"] as? Dictionary<String, Any> {
                if let name = tr["name"] as? String {
                if let trackId = tr["trackId"] as? Int {
                if let postcode = tr["postcode"] as? String {
                if let trackType = tr["trackType"] as? String {
                if let locId = tr["locId"] as? String {
                if let lon = tr["lon"] as? Double {
                if let lat = tr["lat"] as? Double {
                if let phoneNumber = tr["phoneNumber"] as? String {
                if let email = tr["email"] as? String {

                    for obj in tr {
                    let names = Tracks(name: name, trackId: trackId, postcode: postcode, trackType: trackType, locId: locId, lon: lon, lat: lat, phoneNumber: phoneNumber, email: email)
                    self.track.append(names)
                    }
                    self.tableView.reloadData()
                }
                }
                }
                }
                }
                }
                }
                }
                }
            }
        }
        completed()
    }
}

当我用

getTrackData()

我收到以下错误

调用中参数“完成”的缺少参数

它建议我添加

self.getTrackData(completed: <DownLoadComplete>)

但我不确定该说些什么

我在另一个viewcontroller上有一个类似的函数,不需要我将任何内容放在方括号中,但是设置了相同的参数。

很迷茫。

如果要可选的完成闭包,请将其声明为可选的:

func getTrackData(completed: DownLoadComplete?) {
}

并将函数内部的闭包作为可选函数调用

completed?()

然后,您可以不带参数调用getTrackData

实际上,我现在已经废弃了此代码,并实现了Firebase并使用了Firebase代码,这更加整齐,快捷。

感谢您的所有回复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM