使用Swiftyjson将数据放入tableview或核心数据

时间:2015-01-31 21:19:08

标签: json xcode uitableview swift xcode6.1

我有我的代码来获取我的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

0 个答案:

没有答案