Ios Swift 4表格视图未使用通用完成处理程序显示数据

Ios Swift 4表格视图未使用通用完成处理程序显示数据,ios,swift,completionhandler,Ios,Swift,Completionhandler,我对使用泛型函数的完成处理程序有问题,它似乎不会在UITableView上传递任何内容,除非我在其上设置一些断点,请检查下面的代码: public func requestGenericData<T: Decodable>(urlString: String, httpMethod: String?, token: String!, completion: @escaping(T) ->()) { let fullStringUrl = url + urlString

我对使用泛型函数的完成处理程序有问题,它似乎不会在
UITableView
上传递任何内容,除非我在其上设置一些断点,请检查下面的代码:

public func requestGenericData<T: Decodable>(urlString: String, httpMethod: String?, token: String!, completion: @escaping(T) ->()) {
    let fullStringUrl = url + urlString
    guard let url = URL(string: fullStringUrl) else { return }
    guard let token = token else { return }
    var urlRequest = URLRequest(url: url)
    urlRequest.setValue("application/json", forHTTPHeaderField: "accept")
    urlRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
    urlRequest.httpMethod = httpMethod
    URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
        if self.isInternetAvailable() {
            guard let data = data else { return }
            if let httpResponse = response as? HTTPURLResponse {
                if httpResponse.statusCode >= 200 && httpResponse.statusCode < 300 {
                    do {
                        let obj = try JSONDecoder().decode(T.self, from: data)
                        completion(obj)
                    } catch {
                        print("Error: \(String(describing: error))\n StatusCode: \(httpResponse.statusCode)")
                    }
                }
            }
        } else {
            showAlert(title: "No Internet Connect", message: "Please open your network and try again.", alertStyle: .alert, buttonTitle: "OK", buttonStyle: .default)
            return
        }
    }.resume()
}
func listOfServicesMenus() {
    var jobsInCategory = [String]()
    apiHelper.requestGenericData(urlString: "nothing/more/than/a/noob", httpMethod: "GET", token: token) { (noobs: Noobs) in
        for job in jobs.jobCategories {
            jobsInCategory.append(job.name)
            for jobDetails in job.getJobs {
                jobsInCategory.append(jobDetails.name)
            }
        }
        self.listOfServices.dropView.dropDownOptions = jobsInCategory
    }
}
对于swift和正在开发的iOS来说,新出现的一种情况是,当我在iOS上设置断点时,它似乎运行良好,而当没有设置断点时,它却没有显示任何内容

有没有人知道如何用泛型实现一个合适的完成处理程序,或者我在尝试编写这段代码时遗漏了什么

感谢那些帮助我摆脱困境的人

更新 我使用
UIView
UITableViewDelegate
UITableViewDataSource
UITableView
(在
UIView
下创建,以正确处理约束)创建了一个所谓的
下拉菜单

更新2

添加了
UITableView
的实现(在
UIView
下)


多亏了您,Anil Varghese创建了另一个函数,该函数将在
下拉视图
类下重新加载数据,并添加了以下代码行:

func reloadData() {
    DispatchQueue.main.async {
        self.tableView.reloadData()
    }
}

在设置“self.listOfServices.dropView.dropdownpoptions=jobsincontegory”后尝试重新加载tableView可能不相关,但在
dataTask
返回无意义的内容后检查
isInternetAvailable
。@Anilvargese无法访问重新加载的数据()。请您检查一下我的代码,了解如何实现
UITableView
.PS:并且在
numberOfRowsInSection
中创建一个新的单元格根本没有任何效果,也是毫无意义的。
func reloadData() {
    DispatchQueue.main.async {
        self.tableView.reloadData()
    }
}