追加不起作用

append is not working

我已经解析了一个 json 字符串,我想在表格视图中使用它。当我尝试将 json 字符串附加到数组时,附加方法不起作用。这是我使用过的代码。谁能帮我解决这个问题?

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!

var userName = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate =  self
    tableView.dataSource = self

    // 1
    let urlAsString = "http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php"
    let url = NSURL(string: urlAsString)!
    let urlSession = NSURLSession.sharedSession()

    //2
    let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
        if (error != nil) {
            print(error!.localizedDescription)
        }


        // 3
        do {
        let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
        /*let err: NSError!
        if (err != nil) {
            print("JSON Error \(err.localizedDescription)")
        }*/

        // 4
        //let fname: String! = jsonResult["firstname"] as! String
        //let lname: String! = jsonResult["lastname"] as! String
        //let usrname: String! = jsonResult["username"] as! String

        dispatch_async(dispatch_get_main_queue(), {

            if let users = jsonResult.objectForKey("Users") as? [[String:AnyObject]]
            {
                for user in users
                {
                    print("First Name:")
                    print(user["firstname"]!)
                    print("Last Name:")
                    print(user["lastname"]!)
                    print("User Name:")
                    let nameUser = user["username"]! as! String
                    print(nameUser)
                    self.userName.append(nameUser)
                    print("***************")
                }
            }

            //print(jsonResult["Users"]!)
            //print(lname)
            //print(usrname)
        })

        }
        catch {
            print("error");
        }
    })

        jsonQuery.resume()
    //self.userName.append("ganesh")
    // 5
    print(userName)

}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell!
    cell.textLabel?.text = userName[indexPath.row]
    return cell
}

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    userName.removeAtIndex(indexPath.row)
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

您正在数组中追加,只需在调度结束时调用 self.tableView.reloadData() 刷新 table 视图以在 table 视图中显示数据。

append 函数工作正常,但是您在后台填充数组并且在数组中有数据时从不重新加载 tableView

for user in users
{
    if let nameUser = user["username"] as? String {
        self.userName.append(nameUser)
    }    
}
self.tableView.reloadData()

if let users = jsonResult.objectForKey("Users") as? [[String:AnyObject]] 块中试试这个