我想点击一个按钮更改nsurlsession调用的url并立即刷新tableView这是我到目前为止所拥有的
@IBAction func d(sender: AnyObject) {
url = NSURL(string: "http://www.json-generator.com/api/json/get/coDxrSkrNe?indent=2")!
NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in
if error != nil {
print(error!)
} else {
do {
if let restaurants = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String:AnyObject]] {
let names = restaurants.flatMap { $0["preferred_name"] as? String }
let time = restaurants.flatMap { $0["cooking_time"] as? String }
for restaurant in restaurants {
if let name = restaurant["preferred_name"] as? String {
let cookingTime = ""
let food = Food(name: name, time:cookingTime)
self.food.append(food)
}
}
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
print(names)
}
} catch let error as NSError {
print(error)
}
}
}.resume()
self.tableView.reloadData()
}
以下是我的代码现在的样子,但是在单击按钮后tableView仍未重新加载或更改数据
答案 0 :(得分:0)
https://github.com/harsh62/stackoverflow_insert_dynamic_rows
我创建了一个虚拟项目,单击刷新并看到数据已添加到表View中。我使用了您创建的相同功能,但添加到我自己的数据源中。我唯一需要做的就是允许项目的任意加载。
如果您的应用程序(例如第三方Web浏览器)需要加载任意内容,Apple会提供一种完全禁用ATS的方法,但我怀疑您谨慎使用此功能:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如果你面对这样的事情,那么这里是另一个你可以结账的地方 Transport security has blocked a cleartext HTTP
像这样重新初始化数组。
self.names = [];
for restaurant in restaurants {
if let name = restaurant["preferred_name"] as? String {
self.names.append(name)
}
}