我有我的代码来获取我的json数据,但我很难尝试将数据放入tableview。我已经测试了在游乐场中获取数据并且我的数据正确显示。经过深思熟虑后,我应该将数据写入核心数据,然后以这种方式将数据拉入tableview。关于如何获得核心数据的建议。
这是我使用println()得到的,所以我知道我正在获取数据。
当地时间2015年1月31日下午12:00:00 湿度= 100.0 当地时间2015年1月31日下午12:10:00 湿度= 100.0 当地时间2015年1月31日下午12:20:00 湿度= 100.0 当地时间2015年1月31日下午12:30:00 湿度= 100.0
这是我获取json数据的代码。
func updateUISuccess(urlResult: String!) {
let urlPath = urlResult
let url: NSURL = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
if error != nil {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if err != nil {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
}
let json = JSON(jsonResult)
let count: Int? = json["list"].array?.count
println("found \(count!) days")
if let ct = count {
for index in 0...ct-1 {
//Begin days
if let day = json["list"][index]["dt"].double {
//println(day)
let date = NSDate(timeIntervalSince1970: day)
let dateFormatter = NSDateFormatter()
//To prevent displaying either date or time, set the desired style to NoStyle.
dateFormatter.timeStyle = NSDateFormatterStyle.MediumStyle //Set time style
dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle //Set date style
dateFormatter.timeZone = NSTimeZone()
let localDate = dateFormatter.stringFromDate(date)
//self.lastWeatherUpdate.text = "Updated at \(localDate)"
let utc = NSDate()
//self.DayLabel.text = localDate
//self.view.addSubview(self.DayLabel)
println("Local time \(localDate)")
//End Days
//Humidity
if let hum = json["list"][index]["humidity"].double {
println("Humidity = \(hum)")
}
}
}
}
}
这是我尝试将代码放入表格视图。
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch self.json.type {
case Type.Array, Type.Dictionary:
return self.json.count
default:
return 1
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("JSONCell", forIndexPath: indexPath) as UITableViewCell
var row = indexPath.row
switch self.json.type {
case .Array:
cell.textLabel?.text = "\(row)"
cell.detailTextLabel?.text = self.json.arrayValue.description
case .Dictionary:
let key: AnyObject = (self.json.object as NSDictionary).allKeys[row]
let value = self.json[key as String]
cell.textLabel?.text = "\(key)"
cell.detailTextLabel?.text = value.description
default:
cell.textLabel?.text = ""
cell.detailTextLabel?.text = self.json.description
}
return cell
}
我认为我的问题在于正确设置这一行代码。
var json: JSON = JSON.nullJSON