ios - 将 JSON 解析为 tableview

标签 ios json swift uitableview

我正在从远程服务器接收 JSON 文件,并且可以在标签中显示结果。当我调用函数 processJSONData() 时,JSON 数据工作正常,并且 TableView 使用简单数组工作正常。如何合并两者以在 TableView 中显示 JSON 文件的结果?请查看下面的代码并进行编辑。非常感谢:

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var countryLabel: UILabel!
    @IBOutlet weak var capitalLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        //processJSONData()
                  self.myTableView.registerClass(UITableViewCell.self,forCellReuseIdentifier: "cell")
        self.myTableView.dataSource = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func processJSONData(){
        let urlPath = "http://dubaisinan.host22.com/service1.php"
        let url : NSURL = NSURL(string: urlPath)!
        let session = NSURLSession.sharedSession()

        let task = session.dataTaskWithURL(url,completionHandler: {(data, respose, error) -> Void in
            if error != nil {
                println(error)
            }
            else {
                    self.abc(data)
            }
        })
        task.resume()
    }


    func abc(data:NSData)
    {
        var parseError: NSError?

        let result:AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &parseError);

        if(parseError == nil){
            if let dictResult = result as? NSArray{

                dispatch_async(dispatch_get_main_queue()) {
                self.countryLabel.text = dictResult[2]["Capital"] as? String
                }
            }
        }
    }

    @IBOutlet weak var myTableView: UITableView!

    var items = ["One","Two", "Three","Four"]

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell:UITableViewCell = self.myTableView

        .dequeueReusableCellWithIdentifier("cell") as UITableViewCell

        cell.textLabel?.text = self.items[indexPath.row]
        return cell
    }
}

最佳答案

我没有看到您将解析结果分配给全局“项目”并在任何地方使用新数据重新加载表格 View 。

可以在这里完成

if let dictResult = result as? NSArray{
    self.items = dictResult
    self.myTableView.reloadData()

///the rest of the code
            }

关于ios - 将 JSON 解析为 tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283271/

相关文章:

html - UIWebView 忽略内联 anchor /链接

ios - 无法在我的 Xcode 应用程序中使用暗模式

ios - 使用 URL 将 Plist 文件加载到数组中

c# - Json.Net 可以嵌入到可执行文件中吗?

ios - 如何在 Swift 中使用 3d 数组作为 UICollectionView 的数据源?

java - JSON 解析器错误

json - 如何将 Laravel 5.4 与 Angular 4 集成

objective-c - 自动创建的 NSManagedObject 子类不使用 ARC

ios - 状态栏隐藏后 View 被推下?

ios - 如何将 Camera 输入放到屏幕上并对其进行模糊处理?