PFQueryTableViewController

PFQueryTableViewController

所以我要使用Swift 2和Xcode 7创建一个应用程序,并使用Parse作为后端服务。
我有两个视图控制器,一个PFQueryTableViewController用于显示PFObjects列表,另一个用于显示所选单元格的详细信息。
我想办法是将唯一的对象ID附加到数组,然后使用didSelectRowAtIndexPath执行segue。
但是我在这里将元素追加到数组时遇到了问题。加班,我追加并打印数组,它显示元素2次。因此,如果正确的数组是[1,2,3,4],那么我得到的是[1,2,3,4,1,2,3,4],真的很奇怪。

var arrayOfGameId = [String]()
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
    let cellIdentifier = "cell"

    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? PFTableViewCell
    if cell == nil {
        cell = PFTableViewCell(style: .Subtitle, reuseIdentifier: cellIdentifier)
    }
    if let object = object {
        cell!.textLabel?.text = object["Title"] as? String
        cell!.detailTextLabel?.text = object["Platform"] as? String
        if let thumbnail = object["Image"]! as? PFFile {
            cell!.imageView!.image = UIImage(named: "game1.png")
            cell!.imageView!.file = thumbnail
        }
        let gameid = object["GameId"] as! String!
        arrayOfGameId.append(gameid)
    }
    print(arrayOfGameId)
    return cell
}

最佳答案

由于使用的是PFQueryTableViewController,因此无需创建自己的objectId列表。

PFObjects返回的queryForTable将自动存储在名为objects的列表中。

如果您需要获取所选对象并连接到详细视图控制器,则实际上甚至不需要使用didSelectRowAtIndexPath,请尝试以下操作。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using [segue destinationViewController]
    var detailsVC = segue.destinationViewController as! DetailsViewController

    // Pass the selected object to the destination view controller
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        let row = Int(indexPath.row)

        // selectedObject is the PFObject to be displayed
        detailsVC.selectedObject = (objects?[row] as! PFObject)
    }
}

关于ios - 重复的值附加在PFQueryTableViewController中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33150891/

10-10 06:20