gpt4 book ai didi

json - 从 URL 解析 JSON 数据并显示在 TableView 上

转载 作者:行者123 更新时间:2023-11-28 08:48:54 25 4
gpt4 key购买 nike

这是数据在 URL 中的放置方式

{
"studentsinfo": [
{
"id": "100",
"name": "Adam",
"email": "adam@example.com",
"address": "House #33, ABC Lane, ABC CITY 06987",
"gender" : "male",
"phone": {
"mobile": "+1 1234567890",
"home": "00 123456",
"office": "00 321654"
}
},
{
"id": "101",
"name": "Archbould",
"email": "archbould@example.com",
"address": "House #33, ABC Lane, ABC CITY 06987",
"gender" : "male",
"phone": {
"mobile": "+1 1234567890",
"home": "00 123456",
"office": "00 321654"
}
}
}

我必须下载它并在表格 View 中显示。到目前为止,我已经能够下载整个快照,但无法下载特定节点的数据。

这是我的代码:

 let urlAsString = "https://raw.githubusercontent.com/mobilesiri/JSON-Parsing-in-Android/master/index.html"
let url = NSURL(string: urlAsString)!
let urlSession = NSURLSession.sharedSession()

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

// 3
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if (err != nil) {
println("JSON Error \(err!.localizedDescription)")
}

// 4

println(jsonResult)


dispatch_async(dispatch_get_main_queue(), {

})
})
// 5
jsonQuery.resume()
}

现在我的问题是如何下载特定节点数据并将其显示在表格 View 中。

最佳答案

完成以下实现。

  • 创建一个包含所有这些属性的对象,对于每个字典应该有等价的对象。制作那些的数组对象。将数据添加到该索引处每个对象的每个单元格。

  • 另请参阅以下链接

    gist.github.com/Starefossen/689428b6c532d7fec0bb

要点内容:

import UIKit
import Foundation
import XCPlayground

XCPSetExecutionShouldContinueIndefinitely()

class RemoteAPI {
func getData(completionHandler: ((NSArray!, NSError!) -> Void)!) -> Void {
let url: NSURL = NSURL(string: "http://itunes.apple.com/search?term=Turistforeningen&media=software")
let ses = NSURLSession.sharedSession()
let task = ses.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
if (error != nil) {
return completionHandler(nil, error)
}

var error: NSError?
let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary

if (error != nil) {
return completionHandler(nil, error)
} else {
return completionHandler(json["results"] as [NSDictionary], nil)
}
})
task.resume()
}
}

var api = RemoteAPI()

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var tableView: UITableView!
var items: NSMutableArray = []

override func viewDidLoad() {
super.viewDidLoad()

self.view.frame = CGRect(x: 0, y: 0, width: 320, height: 480)
self.tableView = UITableView(frame:self.view!.frame)
self.tableView!.delegate = self
self.tableView!.dataSource = self
self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.view?.addSubview(self.tableView)

api.getData({data, error -> Void in
if (data != nil) {
self.items = NSMutableArray(array: data)
self.tableView!.reloadData()
self.view
} else {
println("api.getData failed")
println(error)
}
})
}

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

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")

if let navn = self.items[indexPath.row]["trackName"] as? NSString {
cell.textLabel.text = navn
} else {
cell.textLabel.text = "No Name"
}

if let desc = self.items[indexPath.row]["description"] as? NSString {
cell.detailTextLabel.text = desc
}

return cell
}
}

ViewController().view

关于json - 从 URL 解析 JSON 数据并显示在 TableView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34616338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com