我有以下代码来创建一个解析一些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()
我收到以下错误
在调用
中缺少参数'completed'的参数它建议我添加
self.getTrackData(completed: <DownLoadComplete>)
但我不确定该怎么说
我在另一个viewcontroller上有一个类似的功能,它不需要我在括号中放任何东西,但是设置了相同的参数。
很困惑。答案 0 :(得分:3)
如果需要可选的完成闭包,请将其声明为可选:
func getTrackData(completed: DownLoadComplete?) {
}
并将函数内部的闭包调用为可选
completed?()
然后你可以在没有参数的情况下拨打getTrackData
。
答案 1 :(得分:-1)
我实际上已经废弃了这段代码,并实施了Firebase并使用了Firebase代码,后者更加整洁,速度更快。
感谢您的所有回复