我刚开始使用Swift并且能够做一些基本的事情。现在我正在尝试用我成功检索的Json Data填充我的UITableView。现在我有这个看起来像这个简单的表
这是我能用这段代码创建的基本TableView
@IBOutlet var StreamsTableView: UITableView!
let groceries = ["Fish","lobster","Rice","Beans"]
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let mycell:UITableViewCell = StreamsTableView.dequeueReusableCell(withIdentifier: "prototype1", for: indexPath)
mycell.textLabel?.text = groceries[indexPath.row]
return mycell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return groceries.count
}
override func viewDidLoad() {
super.viewDidLoad()
StreamsTableView.dataSource = self
}
我现在有一个JsonRequest,我正在使用下面的代码成功完成
override func viewDidLoad() {
super.viewDidLoad()
StreamsTableView.dataSource = self
// Do any additional setup after loading the view.
var names = [String]()
let urlString = "http://localhost:8000/streams"
let url = URL(string: urlString)
URLSession.shared.dataTask(with:url!, completionHandler: {(data, response, error) in
if error != nil {
print(error)
} else {
do {
let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]
if let Streams = parsedData["Streams"] as! [AnyObject]? {
for Stream in Streams {
if let post = Stream["post"] as? String {
names.append(post)
}
}
}
} catch let error as NSError {
print(error)
}
print(names)
}
}).resume()
}
我最喜欢做的是放
的值let post = Stream["post"] as? String
在TableView内部而不是Groceries数组。正如我之前所说的那样,值是从Json回来的,我只是没有找到任何方法可以将这个值放在TableView中,任何帮助都会很棒。我使用的是swift 3.0。
答案 0 :(得分:1)
添加重新加载数据代码
DispatchQueue.main.async {
StreamsTableView.reloadData()
}
在你的for循环之后
for Stream in Streams { ...
答案 1 :(得分:1)
if let Streams = parsedData["Streams"] as! [AnyObject]? {
for Stream in Streams {
if let post = Stream["post"] as? String {
names.append(post)
}
}
}
StreamsTableView.reloadData()
答案 2 :(得分:-1)
完成循环后
StreamsTableView.reloadData()
更新
mycell.textLabel?.text = groceries [indexPath.row]
到
mycell.textLabel?.text = names [indexPath.row]