您好,我是 iOS 开发新手,我很难用 json 数据填充嵌入在 UIviewcontroller 中的 tableview
Posted
技术标签:
【中文标题】您好,我是 iOS 开发新手,我很难用 json 数据填充嵌入在 UIviewcontroller 中的 tableview【英文标题】:Hi there , I'm new to iOS development and I'm having a hard time populating a tableview embedded in a UIviewcontroller with json data 【发布时间】:2016-11-05 21:52:41 【问题描述】:我是 ios 开发的新手,我很难用 json 数据填充嵌入在 UIviewcontroller 中的 tableview。
''导入 UIKit
类
FirstViewController:UIViewController,UITableViewDataSource,UITableViewDelegate
@IBOutlet weak var tableview: UITableView!
var TableData:Array< String > = Array < String >()
var valueToPass:String!
override func viewDidLoad()
super.viewDidLoad()
get_data_from_url("http://www.kaleidosblog.com/tutorial/tutorial.json")
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
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: "FirstViewCell", 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["country"] as? String
if let country_code = country_obj["code"] as? String
TableData.append(country_name + " [" + country_code + "]")
DispatchQueue.main.async(execute: self.do_table_refresh())
func do_table_refresh()
tableview.reloadData()
【问题讨论】:
【参考方案1】:你需要设置tableView的dataSource和delegate to self。
【讨论】:
嗨@Kenny Lim,感谢您的快速回复。我尝试了您的建议,但仍然看不到数据。我连表格的单元格都不能。 你可以在这一行添加一个断点,看看它是否命中 ==> return 1 嗨@KennyLim,我添加了断点,是的,它停在断点处.. 接下来将 BP 放入 TableData.count 并检查计数是多少。如果它大于零,那么您的单元格就是问题所在,如果它为零,那么您的解析就是问题所在。以上是关于您好,我是 iOS 开发新手,我很难用 json 数据填充嵌入在 UIviewcontroller 中的 tableview的主要内容,如果未能解决你的问题,请参考以下文章
带有来自 WebService 的会话 ID 的 IOS 登录 JSON 解析器