我无法解决这个问题我有一个名为row的变量,但swift没有看到它。错误是“使用未解析的标识符”行“”
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let url = NSURL(string: "http://www.mertbarutcuoglu.com/?json=get_posts")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if let urlContent = data {
do {
let jSonData = try NSJSONSerialization.JSONObjectWithData(urlContent, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
let posts = jSonData["posts"] as? NSArray
let row = Int(posts!.count)
} catch {}
}
}
task.resume()
return row.count
}
答案 0 :(得分:3)
未解析的标识符是您的小问题。此代码将从不返回预期值
您无法在numberOfRowsInSection
中使用异步方法。
将代码放入viewDidLoad
中检索数据,然后在numberOfRowsInSection
中返回帖子数量。
并使用Swift原生集合类型。
var posts = [[String:AnyObject]]()
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "http://www.mertbarutcuoglu.com/?json=get_posts")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if error == nil {
do {
let jSonData = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as! [String:AnyObject]
posts = jSonData["posts"] as! [[String:AnyObject]]
self.tableView.reloadData()
} catch let error as NSError{
print(error)
}
} else {
print("NSURLSession error:", error!)
}
}
task.resume()
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}