2016-04-12 17 views
0

'daki ObjectId öğesinden bir İşaretçi olarak ayarlayın. Swift uygulamasında, kullanıcının beğendikleri bir film için oy kullanabileceği bazı oylama düğmeleri oluşturuyorum. Uygulamam da Parse ile entegre edilmiştir.Parçamdaki Parçayı, Swift

Kullanıcı, uygulamamdaki oy kullanma düğmesine bastığında, bir sayı artırır ve Parse veritabanımma eklenir. Artık film bilgilerini ekledikleri şeye ekleyen bir kod ekledim. Bunu yapmak için Votes adlı Parse'de yeni bir Sınıf oluşturdum.

@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 { 

     let votes = PFObject(className: "Votes") 
     votes["userUpVoting"] = PFUser.currentUser()?.objectId 
     votes["filmVotedUp_test"] = object!.objectId 

     votes.saveInBackground() 

    } 
} 

Bu kod çalışır ve kullanıcı için oy etti film için objectId kaydeder, ancak yalnızca bir dize olarak ekler şöyledir: Benim kodudur. İdeal olarak, bu kurulumun veritabanında bir işaretçi olmasını isterim.

Bunu kodumdan nasıl yapabilirim? Ya da bu şekilde kurulmakta bir anlamı yok mu? Teşekkürler.

cevap

2

İlk önce, _User (Kullanıcı Sınıfı) 'na işaret eden Oylar sınıfında bir işaretçi nesnesi ayarlamanız gerekir. Kodunuzda, 'u userUpVoting olarak ayarlamak yerine, PFUser.currentUser() değerini userUpVoting olarak ayarlayın. Bir işaretçi ayarlamanız gerektiğinde, yalnızca nesne kimliğini değil, tüm nesneyi ayarlamanız gerekir. Kodunuzda fark ettiğim başka bir şey: Uygulamaya geçmeden önce, votes.saveInBackground'u votes.saveInBackgroundWithBlock olarak değiştirdiğinizden ve hataları işlediğinden emin olun.

Örneğin, istersek:

classInfo.saveInBackgroundWithBlock({ (success: Bool, error: NSError?) in 

         if success == true { 

          // Object(s) was/were successfully saved 

         } else if error != nil { 

          // Display an alert to the user 
          // Use error!.localizedDescription as the message - it will give the user the specific error that occured 

         } else { 

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

         } 

        }) 
+0

Teşekkür Cevabınız için, şimdi çalışacağız. 'Votes.saveInBackgroundWithBlock' hakkında iyi bir fikir edinirsiniz - Ne tür hataları hesaba katmalıyım? Teşekkürler – Nick89

+0

@ Nick89 Düzenlediğim cevabı alttaki kodla kontrol et –

+0

Mükemmel, teşekkürler – Nick89