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