将信息从Parse传递给TableiewController

时间:2016-01-26 16:05:37

标签: xcode swift parse-platform

当我试图将数据库中的信息从Parse传递给我的TableViewController时,我遇到了一个问题。我认为这就是我调用名称和密码的方式。

当我按下“查看用户”按钮时,应用程序崩溃。

如果您需要更多信息,我会放弃我的git。 https://github.com/emmanuelcu/ParseProject.git

class TableViewController:UITableViewController {

var dataParse:NSMutableArray = NSMutableArray()
var count:Int = 0

override func viewDidLoad() {
    super.viewDidLoad()

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()

    //PFQuery
    let query = PFQuery(className: "LoginCredentials")
    query.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]? , error: NSError?) -> Void in
        if(error == nil){
            print("The current number of users is \(objects!.count)")
            self.count = objects!.count
            self.tableView.reloadData()
        } else {
            print("Error")
        }
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    //return self.dataParse.count
    return self.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "CellData"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableViewCell
    // Configure the cell...
    cell.password.text = dataParse[indexPath.row]["name"] as? String
    cell.name.text = dataParse[indexPath.row]["user"] as? String

    print("Error")
    return cell
}

2 个答案:

答案 0 :(得分:0)

运行查询时,您永远不会将对象分配给数据源,只会分配您收到的对象数。此外,您还可以在不检查对象是否有计数的情况下强制解包该计数,即使没有错误也是如此。

答案 1 :(得分:0)

就像这个dataParse数组是空的你应该填充它,或者应该禁用查看用户按钮,当它是空的等。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "CellData"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableViewCell
    // Configure the cell...
    if dataParse.count > indexPath.row {
      cell.password.text = dataParse[indexPath.row]["name"] as? String
      cell.name.text = dataParse[indexPath.row]["user"] as? String
    }

    print("Error")
    return cell
}