Frage

Ich erstelle eine benutzerdefinierte Klasse ChatRequest, aber wenn ich versuche, es abzufragen, werden keine benutzerdefinierten Schlüssel zurückgegeben.

Hier ist mein 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];
    }
}

Kann mir jemand helfen?Ich habe überprüft, ob meine Klasse korrekt ist und die Schlüssel da sind, aber es funktioniert immer noch nicht.

War es hilfreich?

Lösung

Sie verwenden nicht setValue um einer Abfrage eine Einschränkung hinzuzufügen.Sie verwenden whereKey:equalTo:, also sollte dein Code sein:

- (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];
    }
}

Aus Performancegründen ist es jedoch eine schlechte Idee, die Suchobjekte synchron so aufzurufen.Sie sollten verwenden - (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block damit die Abfrage im Hintergrund abgeschlossen werden kann.Im Abschlussblock können Sie Ihre Benutzeroberfläche aktualisieren.

Auch aus gestalterischer Sicht Ihre toUser sollte eine Referenztypspalte sein, kein Zeichenfolgentyp.Sie könnten dann verwenden

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top