Class swift使用类实例实现变量
我的目标是首先在视图控制器中实现一个带有json数据的viewtable。 然后在另一个viewcontroller中,我想从表中选择一些记录来查看 我的第一班路线在上面Class swift使用类实例实现变量,class,swift2,viewcontroller,Class,Swift2,Viewcontroller,我的目标是首先在视图控制器中实现一个带有json数据的viewtable。 然后在另一个viewcontroller中,我想从表中选择一些记录来查看 我的第一班路线在上面 class Route { var id: Int? var travelTimeSeconds: Int? var condition:String? var lastUpdate:String? var title:String? var backup = [Route]() init(json: NSDictio
class Route {
var id: Int?
var travelTimeSeconds: Int?
var condition:String?
var lastUpdate:String?
var title:String?
var backup = [Route]()
init(json: NSDictionary) {
self.id = json["id"] as? Int
self.travelTimeSeconds = json["travelTimeSeconds"] as? Int
self.condition = json["condition"] as? String
self.lastUpdate = json["lastUpdate"] as? String
self.title = json["title"] as? String
}
init(){}
func findRoutes(predferedroute:String)->[Route] {
let jsonurl = NSURL(string: predferedroute)!
let task = NSURLSession.sharedSession().dataTaskWithURL(jsonurl) { (data,response, error) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
if let urlcontent = data {
do{
let jsonresult = try NSJSONSerialization.JSONObjectWithData(urlcontent, options: NSJSONReadingOptions.MutableContainers)
if let routeArray = jsonresult["result"] as? [NSDictionary] {
for item in routeArray {
self.backup.append(Route(json: item))
}//end for
}//end if
}//end do
catch {
print("Serialization error")
}//end catch
}//end if
})//end dispatch
}//end task
task.resume()
return self.backup
}//end findRoutes
}
在第一个视图中,我编写了以下代码
class MenuPageViewController: UIViewController{
var routes = [Route]()
var implementroutes = Route()
var allroutes:String = "http://quickweb.gr/itsweb/webservices/json?op=GetAll"
var activeRoutes:String = "http://quickweb.gr/itsweb/webservices/json?op=GetActive"
override func viewDidLoad() {
super.viewDidLoad()
NSUserDefaults.standardUserDefaults().setObject("palios55", forKey: "StartUp")
let nickname1 = NSUserDefaults.standardUserDefaults().objectForKey("StartUp")!
print(nickname1)
routes = implementroutes.findRoutes(allroutes)
routes = implementroutes.backup
}//end viewload
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
表视图的其他代理可以工作
但两种代码的路线仍然为零:
routes=implementroutes.findRoutes(所有路由)
routes=routes.backup
我是否错过了ViewController和类的某些功能?
如果我直接在tableview中使用相同的代码,它就可以工作。您遗漏了“async”一词。您的
findrootes
方法将在执行task
之前返回。添加一些日志消息以查看事件发生的顺序。是,这会发生。但是,当我从viewDidLoad中使用out方法时,效果很好。我不知道这些实例是否出了问题