2015-06-02 5 views
0

im используя распознаватель жестов для увеличения голосов в моем бэкэнд, а затем с помощью этого для обновления страницы и каждой ячейки. Я пытаюсь связать изображение с objectId как способ обновления каждого изображения голосов. проблемы продолжают возникать с моей функцией updateVote, потому что я не могу найти объект, связанный с изображением из бэкэнд. Heres мой код для голосования обновления и жест распознавателя:не может обновляться без конкретной ошибки objectId с использованием Swift и Parse

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 

      } 
     } 

Это остальная часть моего кода на этой странице, как я могу получить объект из массива?

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! 

} 

мой мобильный класс

ответ

1

Вы передаете пустую строку как ObjectId objectId: String() ", так что вы не выбираете любую строку, чтобы обновить.

Ваша функция должна передать ObjectId из строки так разобрать может обновить его

enter image description here

+0

то, что я должен поставить вместо пустой строки, если я не знаю, какая картина была спер? я не знаю точный идентификатор объекта, но я знаю, что он его получит. – DanielWolfgangTrebek

+0

Если вы не знаете, какой объект вы собираетесь делать, как разбираться в этом вопросе? Я не могу сказать, как это сделать, поскольку я не вижу, как вы извлекаете данные для заполнения таблицы из разбора. Но я могу сказать, что в этот момент вы должны удержать объектID, чтобы передать его значение здесь. – Icaro

+0

Я хочу увеличить объект, который swiped. Я не знаю, какой объект будет прокручивать пользователь, но я буду знать, когда они это делают, спрашивая, как могу ли я получить этот объект, если он прокручивается? и я добавил в остальной части моего кода мои правки. Любая помощь приветствуется. – DanielWolfgangTrebek