无法使用 Swift 和 Parse 在没有特定 objectId 错误的情况下进行更新

cannot update without specific objectId error using Swift and Parse

我正在使用手势识别器在我的后端增加选票,然后使用它来更新页面和每个单元格。我正在尝试 link 带有 objectId 的图像,以便有办法更新每个图像的投票。我的 updateVote 函数不断出现问题,因为我似乎无法从后端检索与图像关联的 objectId。这是我的更新投票和手势识别器代码:

 var swipeRight = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right
    myCell.postedImage.userInteractionEnabled = true;
    myCell.postedImage.addGestureRecognizer(swipeRight)

    var swipeLeft = UISwipeGestureRecognizer(target: self, action: "respondToSwipeGesture:")
    swipeRight.direction = UISwipeGestureRecognizerDirection.Left
    myCell.postedImage.userInteractionEnabled = true;
    myCell.postedImage.addGestureRecognizer(swipeLeft)



    return myCell

}
    func respondToSwipeGesture(gesture: UIGestureRecognizer) {

    if let swipeGesture = gesture as? UISwipeGestureRecognizer {
        switch swipeGesture.direction {
            case UISwipeGestureRecognizerDirection.Right:
            updateVote(true, objectId: String())
            println("Swiped right")
            case UISwipeGestureRecognizerDirection.Left:
            updateVote(false, objectId: String())
            println("Swiped Left")
            default:
                break
            }
        }
    }

func updateVote(increment: Bool, objectId : String) {
    // Create a pointer to an object of class Posts with id 'objectId'
    var object = PFObject(withoutDataWithClassName: "Post", objectId: objectId)

    // Increment the current value of the quantity key by 1
    if increment == true {
        object.incrementKey("count", byAmount: 1)
    } else {
        object.incrementKey("count", byAmount: -1)
    }

    // Save
    object.saveInBackgroundWithBlock(nil)
}

我如何检索 objectId,因为每当我 运行 我总是收到错误,如果没有特定的 objectId,则无法更新?我得到了 println("swiped right or left") 但我无法投票增加我怎样才能做到这一点?

        import UIKit
        import Parse


        class HomePage: UITableViewController {

            var images = [UIImage]()
            var titles = [String]()
            var imageFile = [PFFile]()
            var votingObjects: [PFObject] = []
            var objectIds = [""]

         override func viewDidLoad() {
            super.viewDidLoad()

            println(PFUser.currentUser())

            println(PFUser.currentUser())

            var query = PFQuery(className:"Post")
            query.orderByDescending("createdAt")
            query.limit = 15
            query.findObjectsInBackgroundWithBlock {
                (objects: [AnyObject]?, error: NSError?) -> Void in
                if error == nil  {
                    println("Successfully retrieved \(objects!.count) scores.")
                    println(objects!)
                    for objectRow in objects! {
                        let object = objectRow as! PFObject


                        if let objectIds = object["objectId"] as? String {
                            self.objectIds.append(objectIds)

                        }





                        //objectIds.append(object.objectId as? String)
                        // Adding them to the array

                        if let title = object["Title"] as? String {
                            self.titles.append(title)
                        }
                        if let imgFile = object["imageFile"] as? PFFile {
                            self.imageFile.append(imgFile)
                        }
                        self.votingObjects.append(object)
                    }
                    dispatch_async(dispatch_get_main_queue(), {
                        self.tableView.reloadData() // Updating the tableView on the main thread - important. Do some research on Grand Central Dispatch :)

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

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return titles.count

    }

    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 500

    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        var myCell:cell = self.tableView.dequeueReusableCellWithIdentifier("myCell") as! cell

        myCell.rank.text = "21"
        myCell.votes.text = votingObjects[indexPath.row]["Post"] as? String
        myCell.postDescription.text = titles[indexPath.row]

        imageFile[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in

            if let downloadedImage = UIImage(data: data!) {

                myCell.postedImage.image = downloadedImage

            }
        }

这是我在该页面上的其余代码我如何从数组中检索 objectId?

import UIKit
import Parse
import Foundation

class cell: UITableViewCell {

    @IBOutlet weak var rank: UILabel!
    @IBOutlet weak var votes: UILabel!
    @IBOutlet weak var postedImage: UIImageView!
    @IBOutlet weak var creditLink: UIButton!
    @IBOutlet weak var addButton: UIButton!
    @IBOutlet weak var postDescription: UITextView!

}

我的手机class

您传递的是一个空字符串作为 objectID objectId: String()",因此您没有选择要更新的任何行。

您的函数应该传递行的 objectID,以便解析可以更新它