我尝试使用Swift 2创建基于页面的导航手表应用程序。我的应用程序如下:
对于这两个接口,我都有名为InterfaceController 和 EconomyInterfaceController的独特控制器。
在每个控制器中,我使用控制器init()函数中的函数读取了一些 JSON 数据
func setFeed(url: String) {
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let request = NSURLRequest(URL: NSURL(string: url)!)
let task: NSURLSessionDataTask = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if let data = data {
do {
let _data: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments)
if let items = _data!["data"] as? NSArray{
self.tableOutlet.setNumberOfRows(items.count, withRowType: "row")
for (index, item) in items.enumerate() {
if let title = self.JSONString(item["title"]) {
if let spot = self.JSONString((item["spot"])) {
let news = newsItem(title: title, spot: spot)
let row = self.tableOutlet!.rowControllerAtIndex(index) as? RowController
row!.rowLabel!.setText(news.title) }
}
}
}
} catch {
}
}
}
task.resume()
}
据我所知,这不是HTTP请求的最佳方式,因为所有请求都在主线程和应用程序启动时运行。这不是我的主要问题,但如果你有任何提议我不能拒绝:)
我的主要问题是我是否在 willActivate()方法中调用setFeed( )方法并使用
row!.rowLabel!.setText(news.title)
我的应用程序有效,但这不是一个好的选择,因为在每次页面更改时都会一次又一次地更新内容。
如果我在init()方法中调用setFeed()方法并使用
row!.rowLabel!.setText(news.title)
仅显示应用的第一页,不显示其他页面。这里有什么问题?