2015-08-31 1 views
0

semble donc ma _User classe comme ceci:Set titre du bouton de suivi après requête de Parse

<code>_User</code> class

Dans la colonne followedPeople j'ai sauvé les objectIds de l'utilisateur qui est suivi par l'utilisateur courant. Toute ma requête ressemble à ceci:

var data:NSMutableArray = NSMutableArray() 
var followedPeople = [NSArray]() 

func loadData() { 

    self.followedPeople.removeAll(keepCapacity: true) 
    self.data.removeAllObjects() 

    var usersQuery:PFQuery = PFUser.query()! 

     usersQuery.orderByAscending("createdAt") 
     usersQuery.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 

     if error == nil { 

      if let objects = objects as? [PFObject] { 
       for object in objects { 
        if let user = object as? PFUser { 

         if user.objectId == PFUser.currentUser()?.objectId { 

          if object["followedPeople"] == nil { 
           println("nil value")          
          } else { 
           self.followedPeople.append(object.objectForKey("followedPeople")! as! NSArray) 
           println(self.followedPeople) 
          } 
         } else { 
          self.data.addObject(object) 
          println(self.data) 
         } 
        } 

        self.tableView.reloadData() 
       } 
      } 
     } else { 
      // Log details of the failure. 
      println("Error: \(error!) \(error!.userInfo!)") 
     } 
    } 
} 

Mon problème est, je sauve les objectIds de tous les utilisateurs suivis par l'utilisateur en cours et je veux utiliser ces objectIds dans le tableView de sorte que si l'utilisateur est en le NSArray alors le titre de bouton de suivi de ces utilisateurs doivent être « unfollow », essentiellement je suis en train de montrer à l'utilisateur s'il est quelqu'un qui est déjà suivant .. Mon code tableView est:

let userData:PFObject = self.data.objectAtIndex(indexPath.row) as! PFObject 


    // Usernames and gender.. 

    myCell.fullName.text = userData.objectForKey("fullName") as! String! 
    myCell.genderLabel.text = userData.objectForKey("gender") as! String! 
    myCell.userTypeLabel.text = userData.objectForKey("userType") as! String! 

    // Profile pictures.. 

    let profilePics = userData.objectForKey("profilePicture") as! PFFile 
    profilePics.getDataInBackgroundWithBlock { (data, error) -> Void in 

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

      myCell.dp.image = downloadedImage 
     } 

    } 

    // here i want to set the button title..like: 
    // if current user is following the user on the cell { 
    //  myCell.followButton.setTitle("following", .normal) 
    // } else { 
    //  myCell.followButton.setTitle("follow", .normal) 
    // } 

    myCell.createButton(self) 

    return myCell 
+0

La question semble être sur la définition d'un titre de bouton, mais je ne vois aucun code lié au bouton. – danh

+0

question est essentiellement sur la sauvegarde des utilisateurs déjà suivis .. –

Répondre

0

Je pense que vous vous souciez de deux tableaux: (1) le tableau de tous les utilisateurs, et (2) le tableau des utilisateurs suivi par l'utilisateur actuel.

La trouvaille trouve tous les utilisateurs. Votre logique après cette découverte devrait changer. Mettez simplement tous les utilisateurs trouvés dans le tableau data.

Dans la cellule pour la ligne à chemin d'index, vous avez ...

let userData:PFObject = self.data.objectAtIndex(indexPath.row) as! PFObject 

Pour déterminer si cet utilisateur est suivi par l'utilisateur en cours, il suffit de vérifier pour voir si l'ID de l'utilisateur est l'identifiant de l'utilisateur suivi tableau. En pseudo-rapide (je ne parle vraiment pas) ...

var myFollowedUserIds = PFUser.currentUser["followedUsers"] 
var userIsFollowed /* this is a bool */ myFollowedUserIds.containsObject(userData.objectId) 

Maintenant, configurez la cellule avec userIsFollowed, en disant des choses comme ...

var buttonTitle = userIsFollowed? "Follow" : "Unfollow" 

Vous pourriez envisager d'améliorer votre conception en conservant un tableau de pointeurs vers les utilisateurs suivis, plutôt que des identifiants de chaînes dans cette colonne followsUsers. Un avantage est qu'ils peuvent être récupérés avec impatience lorsque vous obtenez l'utilisateur actuel.

+0

Ouais je pensais à ce sujet aussi, mais je suppose qu'il ya des limites pour compter les pointeurs? Ai-je raison? –

+0

pourriez-vous m'aider à améliorer mon design? Quel est le meilleur moyen de sauvegarder les followersUsers ou followers? –

+0

L'amélioration de la conception à laquelle j'ai fait référence utilise des pointeurs plutôt que des identifiants de chaînes dans le tableau. Il n'y a pas de distinction pour ceux qui concernent les comptes ou les limites. L'avantage des pointeurs est que l'objet réel pointé vers peut être atteint lorsque l'objet avec le pointeur est récupéré. Voir la requête includeKey. – danh