2016-04-03 2 views
0

Ich baue eine App, die die folgenden KlassenSwift 2/Parse Wenn PFUser id ist die gleiche in Likes Klasse

  • Benutzer

objectId

Benutzername

hat
  • Rezepte

ObjectId

Rezeptname

Rezept Datei

UploadedByUser (Zeiger auf Klasse Benutzer)

  • Likes

LikedByUser (Zeiger auf Klasse Benutzer)

LikedRecipe (Zeiger auf Klasse Rezepte)

Also, wenn ein Benutzer bereits ein Rezept gefallen hat, das Bild der Schaltfläche in der Zelle sollte eine spezifische Background hat, und wenn ist nicht sollte eine andere haben. Was ich habe versucht, ist dies

let likesClassy = PFObject(className: LIKES_CLASS_NAME) 
let currentUser = PFUser.currentUser() 

if likesClassy[LIKES_LIKED_BY] === currentUser! { 
    let imgLiked = UIImage(named: "likedButt") as UIImage! 
    cell.likeOutlet.setBackgroundImage(imgLiked, forState: UIControlState.Normal) 


} else { 

    let imgUnLiked = UIImage(named: "likeButt") as UIImage! 
    cell.likeOutlet.setBackgroundImage(imgUnLiked, forState: UIControlState.Normal) 

} 

Und ich habe diesen Code in der Collection, wo ich auch geladen werden, wie viele mag das Rezept usw. hat lege ich Ihnen das Bild von der parse.com Klasse unter

Also in der if Anweisung ich versuche zu sagen, dass, wenn der aktuelle Benutzer ist gleich mit dem Userpointer der Likes-Klasse, dann sollte das Hintergrundbild der Schaltfläche gemocht werdenButt, sonst sollte wieButt sein.

Aber das funktioniert nicht und ich kann nicht herausfinden, warum. Irgendeine Idee?

Aktualisierung. Ich lege Ihnen die volle Vorlieben Klasse

enter image description here

Antwort

1

Sie haben keine Objekte in Parse-Server holen. Sie sollten die Objekte mit einigen Prädikatoptionen holen. Dies ist die Funktion, die Sie verwenden sollten. Es sieht die Ihre currentUser und Ihre LIKES_LIKED_BY Zeile in Ihrem Parse aus. Wenn Ihre Zeile LIKES_LIKED_BY über einen aktuellen Benutzer verfügt, werden Benutzer abgerufen.

func getLikedUsers() { 
    let user = PFUser.currentUser() 
    let query = PFQuery(className: "LIKES_CLASS_NAME") 
    query.whereKey("LIKES_LIKED_BY", equalTo: user!) 
    query.findObjectsInBackgroundWithBlock() { 
     (let fetchedObjects, error) in 
     if error == nil { 
      // Query succeed. 
      if fetchedObjects?.isEmpty == false { 
       //If your currentUser already liked. 
       if let fetchedUsers = fetchedObjects as? [PFUser] { 
        for fetchedUser in fetchedUsers { 
         print(fetchedUser.username) 
         // You got the users Do someting with your liked users. 
        } 
       } 
      } else { 
       // Your user didn't liked 
      } 
     } else { 
      // Parse Query fail. Do someting with error. 
      print(error?.localizedDescription) 
     } 
    } 
} 
+0

Gute Idee, obwohl es nicht funktioniert. –

+0

Bitte teilen Sie Ihre Klasse und Parse Datenbankbild. Ich glaube, du hast keine Gegenstände geholt. – emresancaktar

+0

Ich habe mit den Bildern aktualisiert, aber Sie denken, dass ich eine vollständige Abfrage in dieser Klasse 'Likes' machen muss und dann die Schaltfläche Bild ändern? –