Вопрос

Я создаю собственный класс ChatRequest, но когда я пытаюсь запросить его, он не возвращает никаких пользовательских ключей.

Вот мой код:

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

Кто-нибудь может помочь?Я проверил, что мой класс правильный и ключи на месте, но все равно не работает.

Это было полезно?

Решение

Вы не используете setValue чтобы добавить ограничение в запрос.Ты используешь whereKey:equalTo:, поэтому ваш код должен быть:

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

Однако из соображений производительности синхронно вызывать объекты поиска таким образом — плохая идея.Вы должны использовать - (void)findObjectsInBackgroundWithBlock:(PFArrayResultBlock)block чтобы разрешить выполнение запроса в фоновом режиме.В блоке завершения вы можете обновить свой пользовательский интерфейс.

Кроме того, с точки зрения дизайна ваш toUser должен быть столбцом ссылочного типа, а не строкового типа.Затем вы можете использовать

[query whereKey:@"toUser" equalTo:[PFUser currentUser]];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top