2016-04-14 9 views
-1

Film uygulamam için bazı oylama düğmeleri yapmaya çalışıyorum.Parse'deki bir sınıftan silme - Hızlı Giriş

Parse kullanıyorum ve Votes_Up adlı yeni bir sınıf oluşturdum. Bu sınıfta 2 sütun vardır: User_Voting ve Film_VotedFor.

Aşağıdaki kodum, tuşa basıldığında etkindir. Düğmeye basıldığı currentUser ve film nesnesini alır ve bunları Parse'ye ekler. Benim veritabanı şöyle görünür:

enter image description here

Ben

yüzden yolu şu anda kullanıcı oy düğmesine basarsa, o DB bilgi ekler ve 1 ekler, işleri gerekenler sayım. Kullanıcı tekrar bastığında, sayıyı 1'e kadar alarak günceller.

Ayrıca, veritabanına ekleyeceği satırı, bunun için oy veren Kullanıcı tarafından kaldırmak istiyorum. Bunu nasıl yapabilirim??

Kodum:

@IBAction func upVoteButton(sender: UIButton) { 

    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView) 
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint) 
    let object = objectAtIndexPath(hitIndex) 

    if PFUser.currentUser() != nil { 

     if userPressedUpButton == false { 

      userPressedUpButton = true 

      let voteUp = PFObject(className: "Votes_Up") 
      voteUp["User_Voting"] = PFUser.currentUser() 
      voteUp["Film_VotedFor"] = object! 

      object!.incrementKey("UpVoteCount") 
      object!.saveInBackground() 

      voteUp.saveInBackgroundWithBlock({ (success, error) in 

       if success == true { 

        // Object(s) was/were successfully saved 

       } else if error != nil { 

        // Display an alert to the user 

       } else { 

        // Display an alert to the user - something went wrong 

       } 

      }) 

     } else { 

      userPressedUpButton = false 

      // I need to removed the row from the class here that was added, as the user has retracted their vote! 

      object!.incrementKey("UpVoteCount", byAmount: -1) 
      object!.saveInBackground() 

     } 

    } else { 

     // No user is logged in so they can't vote 
     performSegueWithIdentifier("Votes_LoginPopup", sender: self) 

    } 

    self.tableView.reloadData() 

} 

cevap

0

bu deneyin:

var query = PFQuery(className:"Votes_Up") 
    query.whereKey("User_Voting", equalTo:PFUser.currentUser()) 
    query.limit = 1 
    query.findObjectsInBackgroundWithBlock { 
     (votesUp: [AnyObject]?, error: NSError?) -> Void in 
     if error == nil { 
      if let objects = votesUp as? [PFObject] { 
       var firstObject = objects[0] 
       dispatch_async(dispatch_get_main_queue(),{ 
        // do delete here 
        firstObject.deleteEventually(); 
       }) 

      } 
     } 
    } 

veya bu:

let query = PFQuery(className: "Votes_Up") 
query.whereKey("User_Voting", equalTo: PFUser.currentUser()) 
query.findObjectsInBackgroundWithBlock { 
(objects: [AnyObject]?, error: NSError?) -> Void in 
    for object in objects { 
     object.deleteEventually() 
    } 
} 
+0

Bunu okudum, ama i' ne çevirmez Aslında yapmaya çalışıyorum. Önerilerini denedim ama sonucumu alamıyorum. – Nick89

+0

Satırı silmek istediğini sanıyordum? Bunu nasıl yapıyorsun ... sil'i çağırarak ... başka bir şey yapmaya çalışmadığınız sürece ... –

+0

Ekleyen kullanıcı tarafından yapılmış bir satırı silmek istiyorum. Gönderdiğiniz bağlantı bana bunu nasıl yapacağımı göstermiyor ve Swift'de yazılmıyor. – Nick89