ios - 如何使用 json 中的可变数组填充我的 tableview

标签 ios swift nsmutablearray

所以我从 json 格式的 url 获取数据。我试图在我的表格 View 中显示数据,但是,尽管感觉很简单,但我不知道该怎么做。

class CompanyModel {

func getJSON() {

    let companyArray: NSMutableArray = NSMutableArray()

    let requestURL: NSURL = NSURL(string: "http://localhost/Companies/JSON.php")!
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(urlRequest) {
        (data, response, error) -> Void in

        let httpResponse = response as! NSHTTPURLResponse
        let statusCode = httpResponse.statusCode

        if (statusCode == 200) {
            print("Everyone is fine, file downloaded successfully.")

            do{

                let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)



                if let companies = json["companies"] as? [[String: AnyObject]] {

                    for company in companies {

                        if let name = company["name"] as? String,
                            let phoneNumber = company["phone_number"] as? String,
                            let website = company["website"] as? String,
                            let email = company["email"] as? String,
                            let address = company["address"] as? String

                        {
                        let company = CompanyModel()

                            company.name = name
                            company.phoneNumber = phoneNumber
                            company.website = website
                            company.email = email
                            company.address = address
                        }
                        companyArray.addObject(company)
                        print(companyArray)
                    }
                }
            } catch {
                print("Error with Json: \(error)")
            }

        }
        print(companyArray) <- array is populated
    }
    print(companyArray) <- array is empty
    task.resume()
}
}

我知道我以前做过......我猜在 viewDidLoad() 中我会调用 CompanyModel().getJSON() 这会获取数据,然后将其存储在一个空数组中,但我对如何做感到茫然。

我无法声明 NSarray 变量并直接将其数据存储在变量中,然后填充 TableView 。尽管如此,我希望这能解释我想要实现的目标。

最佳答案

首先更改函数以返回您的公司数组:

func getJSON() -> NSMutableArray {

}

在 for 循环结束时返回公司数组

for company in companies {

 }

填充数组后,返回此 block 内的数组:

dispatch_async(dispatch_get_main_queue(), { 

    return companyArray

})

task.resume() 返回数组之后:

return companyArray

从任何你想调用这个类并获取数组的地方:

获取类的引用

Let companyModal = CompanyModel()

在任何有 TableView 和类的地方,比如在 viewDidLoad 中,您应该首先有 NSMutableArray

var arraySource = NSMutableArray()

viewDidLoad中:

arraySource = companyModal.getJSON()

并在 tableView 中显示数据:

Mytableview.reloadData()

关于ios - 如何使用 json 中的可变数组填充我的 tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445069/

相关文章:

ios - 在屏幕上显示 UIImageView 点击

ios - 图像在循环动画中移动 - Swift

ios - 使用其键值将数组中的数据添加到另一个数组

iphone:如何同步 2 个 NSMutableArrays 的内容?

ios - cell.accessoryType = .Checkmark

ios - 线程 1 : EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, 子代码 = 0X0) - 错误

iphone - 支持的方向不限制实际方向

ios - iOS 中控制反转的框架和静态库有何不同?

ios - 在SwiftUI中点击Button时获取Tag值

php - 使用 PHP 连接到 MYSQL 失败 (+Swift)