使用未解析的标识符

时间:2015-10-20 08:59:03

标签: json swift

在我的Swift代码中处理推送通知我有这个图像:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var tableView:UITableView?
    var items = NSMutableArray()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewWillAppear(animated: Bool) {
        let frame:CGRect;(x:0, y: 100, width: self.view.frame.width, height: self.view.frame.height-100)
        self.tableView = UITableView(frame: frame)
        self.tableView?.dataSource = self
        self.tableView?.delegate = self
        self.view.addSubview(self.tableView!)

        let btn = UIButton(frame: CGRect(x: 0, y: 25, width: self.view.frame.width, height: 50))

        btn.backgroundColor = UIColor.cyanColor()
        btn.setTitle("EKLE", forState: UIControlState.Normal)
        btn.addTarget(self, action: "addData", forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(btn)
    }
    func addData(){

        RestApiManager.sharedInstance.getRandomUser { json -> Void in
            let results = json["results"]

            for (index: String, subJson: JSON) in results{
                let user: AnyObject = subJson["user"].object
                self.items.addObject(user)
                dispatch_async(dispatch_get_main_queue(), {
                    tableView?.reloadData()
                })

            }

        }

    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell?

        if cell == nil{
            cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell")
        }
        let user:JSON = JSON(self.items[indexPath.row])

        let picURL = user["picture"]["medium"].string
        let url = NSURL(string: picURL!)
        let data = NSData(contentsOfURL: url!)

        cell?.textLabel?.text = user["username"].string
        cell?.imageView?.image = UIImage(data: data!)

        return cell!
    }

}

这是错误:

  

使用未解析的标识符' subJson'

let user: AnyObject = subJson["user"].object

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Swift 2(Xcode 7),则使用类型化参数循环字典的语法已更改。

现在你应该这样做:

for (index, subJson):(String, JSON) in results {
    let user: AnyObject = subJson["user"].object
    self.items.addObject(user)
    dispatch_async(dispatch_get_main_queue(), {
        tableView?.reloadData()
    })
}

旧方式:

(index: String, subJson: JSON)

新方式:

(index, subJson):(String, JSON)