您好,我是 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的主要内容,如果未能解决你的问题,请参考以下文章

JSON解析问题

带有来自 WebService 的会话 ID 的 IOS 登录 JSON 解析器

ReferenceError:没有定义describe(Debugging Protractor Test)

UINavigationController 不显示

使用JSON动态添加表行

Interface Builder IB - 导航控制器,跳过视图