Watchkit表闪烁然后完全消失

时间:2015-07-15 07:28:30

标签: json swift watchkit

我有一个由JSON信息填充的watchkit表。当我运行该程序时,该表将被填充,但它开始闪烁然后完全消失。每次运行时都会发生这种情况,有时候桌子根本就没有显示出来。任何人都知道为什么会这样吗?

编辑:对不起,我应该在发布此问题时输入我的代码。

 @IBOutlet weak var earthTable: WKInterfaceTable!


            //Create cells
    private func loadTableData() {
        // getEarthquakeInfo is the function that I use to parse the JSON and grab the infomation I need into info.
        getEarthquakeInfo { (info) in

            self.earthTable.setNumberOfRows(info.count, withRowType: "earthquake")

            //Create cells
            for index in 0..<self.earthTable.numberOfRows {
                var currentRow = self.earthTable.rowControllerAtIndex(index) as earthquakeViewController


                let time = info[index].time
                let mag = info[index].mag
                let title = info[index].title
                currentRow.titleLabel.setText("\(title)")
                currentRow.timeLabel.setText("\(time)")
                currentRow.magLabel.setText("\(mag)")
            }
        }
    }
    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        loadTableData()

    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()




    }
    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

}

这是我的函数,getEarthquakeInfo位于我的interfaceController.swift顶部:

class InterfaceController: WKInterfaceController {

    var info = [AppModel]()

    func getEarthquakeInfo(completion: (results : [AppModel]) ->Void ){


        DataManager.getEarthquakeDataFromFileWithSuccess {
            (data) -> Void in

            let json = JSON(data: data)


            if var JsonArray =  json.array {
                JsonArray.removeAtIndex(0)

                for appDict in JsonArray {
                    // parsing
                    var ids: String? = appDict["id"].stringValue
                    var title: String? = appDict["title"].stringValue
                    var time: String? = appDict["time"].stringValue
                    var lattitude: String? = appDict["lat"].stringValue
                    var longitude: String? = appDict["lng"].stringValue
                    var north: String? = appDict["north"].stringValue
                    var west: String? =  appDict["west"].stringValue
                    var mag: String? = appDict["mag"].stringValue
                    var depth: String? = appDict["depth"].stringValue
                    var timeStamp: String? = appDict["timestamp"].stringValue

                    // Splitting up title string into 2 parts
                    let newString = title!.stringByReplacingOccurrencesOfString("  ", withString: " - ", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    var title2strings = newString.componentsSeparatedByString(" - ")
                    var scale = title2strings[0]
                    var location = title2strings[1]

                    // replacing M in scale string with Richter Scale
                    let scaleString = scale.stringByReplacingOccurrencesOfString("ML", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    let scaleString2 = scaleString.stringByReplacingOccurrencesOfString("mb", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    let scaleString3 = scaleString2.stringByReplacingOccurrencesOfString("Mw", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    let scaleString4 = scaleString3.stringByReplacingOccurrencesOfString("MD", withString: "Magnitude", options: NSStringCompareOptions.LiteralSearch, range: nil)
                    let scaleString5 = scaleString4.stringByReplacingOccurrencesOfString("M ", withString: "Magnitude ", options: NSStringCompareOptions.LiteralSearch, range: nil)

                    //Formatting the date
                    var date = NSDate(dateString: time!).getDatePart()

                    // Collecting all the information
                    var information = AppModel(idEarth: ids, title: title, time: date, lat: lattitude, lng: longitude, north: north!, west: west, mag: mag, depth: depth, timeStamp: timeStamp, location: location, scale: scaleString5)
                    self.info.append(information)

                    //sorting array by highest magnitude
                    // self.info.sort({$0.mag > $1.mag})

                    // returning the completion handler
                    completion(results: self.info)
                }


            }

        }

    }

但是,我认为这就是问题所在。这是我调用Web服务的文件。当我调试它时,会检索数据,但是一旦填充了表就会崩溃。 我的DataManager.swift文件:

import Foundation
let earthquakeURL = "http://www.kuakes.com/json/"
class DataManager {
    class func getEarthquakeDataFromFileWithSuccess(success: ((websiteData: NSData) -> Void)) {
        //1
        loadDataFromURL(NSURL(string: earthquakeURL)!, completion:{(data, error) -> Void in
            //2
            if let urlData = data {
                //3
                success(websiteData: urlData) // When I debug, this line is hit and the data is being received, the table populates, however like I said it just disappears completely.
            }
            else {
                println("nothing")
            }
        })
    }
    class func loadDataFromURL(url: NSURL, completion:(data: NSData?, error: NSError?) -> Void) {
        var session = NSURLSession.sharedSession()

        // Use NSURLSession to get data from an NSURL
        let loadDataTask = session.dataTaskWithURL(url, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
            if let responseError = error {
                completion(data: nil, error: responseError)
            } else if let httpResponse = response as? NSHTTPURLResponse {
                if httpResponse.statusCode != 200 {
                    var statusError = NSError(domain:"com.kuakes", code:httpResponse.statusCode, userInfo:[NSLocalizedDescriptionKey : "HTTP status code has unexpected value."])
                    completion(data: nil, error: statusError)
                } else {
                    completion(data: data, error: nil)
                }
            }
        })

        loadDataTask.resume()
    }







}

0 个答案:

没有答案