Question

Je suis entrain de créer une classe personnalisée ChatRequest, mais lorsque j'essaie de l'interroger, il ne sera pas de retour personnalisé touches.

Voici mon code:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    PFQuery *query = [PFQuery queryWithClassName:@"ChatRequest"];
    [query setValue:[PFUser currentUser].username forKey:@"toUser"];
    NSArray *objects = [query findObjects];
    for (NSUInteger i = 0; i < objects.count; i++) {
        PFObject *object = [objects objectAtIndex:i];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chat Request!" message:object.sendingUser + @"wants to chat with you!" delegate:self cancelButtonTitle:@"Decline" otherButtonTitles:@"Accept", nil];
        [alertView show];
    }
}

Quelqu'un peut-il aider?J'ai vérifié que ma classe était correcte et les touches étaient là, mais cela ne fonctionne toujours pas.

Était-ce utile?

La solution

Vous n'utilisez pas setValue pour ajouter une contrainte à une requête.Vous utilisez whereKey:equalTo:, de sorte que votre code devrait être:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    PFQuery *query = [PFQuery queryWithClassName:@"ChatRequest"];
    [query whereKey:@"toUser" equalTo:[PFUser currentUser].username ];
    NSArray *objects = [query findObjects];
    for (NSUInteger i = 0; i < objects.count; i++) {
        PFObject *object = [objects objectAtIndex:i];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Chat Request!" message:object.sendingUser + @"wants to chat with you!" delegate:self cancelButtonTitle:@"Decline" otherButtonTitles:@"Accept", nil];
        [alertView show];
    }
}

Cependant, pour des raisons de performance, il est une mauvaise idée d'appeler le trouver des objets de manière synchrone comme ça.Vous devez utiliser - (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block pour permettre à la requête de terminer dans l'arrière-plan.À la fin du bloc, vous pouvez actualiser votre INTERFACE utilisateur.

Aussi, à partir d'une conception de point de vue de votre toUser devrait être une référence de type colonne, pas un type de chaîne.Vous pouvez ensuite utiliser

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top