私はSwiftを初めて使用しています。私のWebサイトからJSONデータを読み取るテーブルを作成しようとしています。私はいくつかのチュートリアルに続き、私のコードをテーブルコントローラで動作させることができました。今私は内部のテーブルビューでビューコントローラを使用しようとしているので、私はよりカスタマイズすることができます。私の問題は、新しいコードを使用しようとするとデータが実際に表示されないということです。JSONを外部サーバーからSwift tableViewに接続する
これは私が私のviewController.swiftに持っているものです。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var TableData:Array<String> = Array <String>()
override func viewDidLoad() {
super.viewDidLoad()
get_data_from_url("http://www.stevenbunting.org/Alliris/service.php")
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return TableData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = TableData[indexPath.row]
return cell
}
func get_data_from_url(_ link:String)
{
let url:URL = URL(string: link)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url)
request.httpMethod = "GET"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let task = session.dataTask(with: request as URLRequest, completionHandler: {
(
data, response, error) in
guard let _:Data = data, let _:URLResponse = response , error == nil else {
return
}
self.extract_json(data!)
})
task.resume()
}
func extract_json(_ data: Data)
{
let json: Any?
do
{
json = try JSONSerialization.jsonObject(with: data, options: [])
}
catch
{
return
}
guard let data_list = json as? NSArray else
{
return
}
if let countries_list = json as? NSArray
{
for i in 0 ..< data_list.count
{
if let country_obj = countries_list[i] as? NSDictionary
{
if let country_name = country_obj["user"] as? String
{
if let country_code = country_obj["friendlist"] as? String
{
TableData.append(country_name + " [" + country_code + "]")
}
}
}
}
}
DispatchQueue.main.async(execute: {self.do_table_refresh()
})
}
func do_table_refresh()
{
self.tableView.reloadData()
}
}
ViewControllerをtableViewのデータソースとして設定しましたか?おそらくあなたのViewControllerコードが[UITableViewDataSource-protocol](https://developer.apple.com/reference/uikit/uitableviewdatasource)を実装していないためです) –