Pregunta

Estoy creando una clase personalizada ChatRequest, pero cuando trato de consulta, no se devolverá ningún claves personalizadas.

Aquí está mi código:

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

Alguien puede ayudar?He comprobado que mi clase era la correcta, y las llaves estaban allí, pero todavía no funciona.

¿Fue útil?

Solución

No uso setValue para agregar una restricción a una consulta.Utiliza whereKey:equalTo:, por lo que el código debe ser:

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

Sin embargo, por razones de rendimiento es una mala idea llamar a la búsqueda de objetos de forma sincrónica como este.Usted debe utilizar - (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block para permitir la consulta completa en el fondo.En la realización de bloque puede actualizar su interfaz de usuario.

También, desde un punto de vista del diseño de su toUser debe ser un tipo de referencia de la columna, no un tipo de cadena.Usted podría utilizar

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top