gpt4 book ai didi

ios - 我似乎无法访问 swiftyJSON 中的子数组

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

这是 JSON

{
"city": {
"id": 4930956,
"name": "Boston",
"coord": {
"lon": -71.059769,
"lat": 42.358429
},
"country": "US",
"population": 0,
"sys": {
"population": 0
}
},
"cod": "200",
"message": 0.0424,
"cnt": 39,
"list": [
{
"dt": 1473476400,
"main": {
"temp": 76.33,
"temp_min": 73.11,
"temp_max": 76.33,
"pressure": 1026.47,
"sea_level": 1027.96,
"grnd_level": 1026.47,
"humidity": 73,
"temp_kf": 1.79
},
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10n"
}
],
"clouds": {
"all": 8
},
"wind": {
"speed": 7.29,
"deg": 300.501
},

这是我的 Controller ,我去那里获取数据......

class ViewController: UIViewController,UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var amConnected: UILabel!

@IBOutlet weak var weatherTable: UITableView!
var arrRes = [[String:AnyObject]]()
var swiftyJsonVar: JSON?

override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.doSomethingNotification(_:)), name: "ReachabilityChangedNotification", object: nil)

let openWMAPI = "http://api.openweathermap.org/data/2.5/forecast/city?q=Boston,Ma&APPID=XXXXXXXXXXXXXXX&units=imperial"

Alamofire.request(.GET,openWMAPI).responseJSON{
(responseData) -> Void in
print(responseData)
let swiftyJsonVar = JSON(responseData.result.value!)

self.weatherTable.reloadData()

}
.responseString{ response in
//print(response.data.value)
// print(response.result.value)
//print(response.result.error)
//eprint("inhere");

}

weatherTable.rowHeight = UITableViewAutomaticDimension
weatherTable.estimatedRowHeight = 140
// Do any additional setup after loading the view, typically from a nib.
}

在我的表循环中,它现在说 jsonArray 为 nil 并且失败了。我不确定我现在做错了什么。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = weatherTable.dequeueReusableCellWithIdentifier("theCell", forIndexPath: indexPath)
let label1 = cell.viewWithTag(101) as! UILabel
print("inhere")


if((swiftyJsonVar) != nil){
if let jsonArray = self.swiftyJsonVar["list"].array {
var temp = jsonArray[indexPath.row]["main"]["temp"].float
var rdate = jsonArray[indexPath.row]["dt_txt"].string
print(temp)
}else{
print("test")
}
}


label1.text = "TEST"

return cell
}

总的来说,我只是不确定如何深入研究 JSON 的下一层。

最佳答案

如果您不反对,请尝试使用 AlamofireObjectMapper 而不是 SwiftyJson

1) 如果您要经常更改 json 键的名称,并且要进行大量枚举转换,请尝试:

AlamofireObjectMapper

2) 如果名称相同,只需进行最少的转换,直接使用: AlamofireJsonToObjects

这两种情况,都为您的 json 对象创建模型类。如果你有一个数组——你可以将一个 var 定义为一个数组如果它是一个对象或对象数组 - 然后您可以创建另一个模型类,它再次是可映射的,然后在原始模型中定义这样一个对象 var。

上述库将使您的代码在将对象提取到 json 时非常干净。

关于ios - 我似乎无法访问 swiftyJSON 中的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39419074/

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