2017-03-08 68 views
1

我有下面的代码来创建分析一些JSON数据的功能。斯威夫特3 FUNC(完成问题

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>) 

,但我不知道要放什么东西在说

我有,不需要我把括号任何其他视图 - 控制了类似的功能位,但具有相同的参数设置。

很混乱。

+0

如果您的问题已回答,请将此答案标记为已接受。 – Alexander

+0

您也可以在单个if语句中组合多个'let'绑定。 – Alexander

+0

该代码是可怕的。并且你的问题标题也被打破;)请解决这两个问题,以获得更多的关注 –

回答

3

如果你想要一个可选的完成闭合,其声明为可选:

func getTrackData(completed: DownLoadComplete?) { 
} 

,并调用函数内部的盖,可选

completed?() 

然后就可以调用getTrackData没有参数。

0

我实际上已经取消了这段代码,并且实现了Firebase并使用了Firebase代码,它更加整洁,更快捷。

谢谢所有回复