未解析的标识符错误Swift

时间:2016-06-08 15:34:07

标签: arrays json swift class swift2

我无法解决这个问题我有一个名为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
}

1 个答案:

答案 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
}