Helpers - компьютеры, интернет, программирование

PFQuery, в котором whereKey является указателем

У меня есть 2 класса: класс сообщений и класс пользователя. Я пытался запросить класс Posts, чтобы показывать только сообщения от текущего пользователя. Я делаю это так:

[query whereKey:@"user" containedIn:[PFUser currentUser][@"followings"]];

Столбец «followings» — это массив, содержащий objectId подписчиков текущего пользователя. Моя проблема, похоже, заключается в том, что ключ @"user" в классе Posts является указателем на класс User и вызывает эту ошибку:

Error: pointer field user needs a pointer value (Code: 102, Version: 1.2.10)

Как мне это сделать? Заранее спасибо.

Edit1: информация добавлена

Здесь я предоставляю подробную информацию об упомянутых 2 классах:

  • Класс сообщений

objectId(строка)----текст(строка)----пользователь(указатель)----...

  • Класс пользователей

objectId(string)----username(string)----followings(массив user'objectId)----...


Ответы:


1

Мне удалось запросить сообщения только из подписчиков текущего пользователя с помощью matchesQuery:

PFQuery *userQuery = [PFUser query];
[userQuery whereKey:@"objectId" containedIn:[PFUser currentUser][@"followings"]];
[query whereKey:@"user" matchesQuery:userQuery];
13.01.2015

2

Существует быстрая версия для проверенного ответа

//Create an user query
let userQuery = PFUser.query()
//get all PFUser contained in string array
userQuery?.whereKey("objectId", containedIn: PFUser.currentUser()!["FollowArray"]as! [String])
//add subquery
query.whereKey("user", matchesQuery: userQuery!)
22.10.2015

3

Насколько я знаю, у вас не может быть указателей в массиве в Parse, вам нужно будет поместить идентификатор объекта пользователя в массив "followings", а затем искать это значение в массиве. то вы можете искать PFUser следующим образом:

PFQuery *query = [PFUser query];
[query whereKey:@"objectId" equalTo:@"INSERT-OBJECT-ID-IN-ARRAY"];
PFUser *user = (PFUser *)[query getFirstObject];
12.01.2015
  • В массиве нет указателя, кроме objectId (userId) текущего пользователя. Чего я пытаюсь добиться, так это как заменить kPAWParseUserKey на что-то, представляющее objectId в классе User? 12.01.2015
  • Вы очень ошибаетесь, столбцы массива с указателями в них очень распространены, и это был бы предпочтительный способ сделать это вместо непосредственного хранения идентификатора. 12.01.2015

  • 4

    Чтобы получить сообщения только текущего пользователя, вам нужно выполнить запрос пользователя из синтаксического анализа, в котором вам нужно передать текущего пользователя.

    Я публикую здесь небольшой фрагмент кода, который может дать вам четкое представление

     PFQuery *query = [PFQuery queryWithClassName:@"PostTable"];
    
     [query whereKey:@"user"  equalTo:[PFUser currentUser]]; // "user" must be pointer in the post class (table)
     [query orderByDescending:@"createdAt"];
     [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
              for (PFObject *obj in objects) {
    
               NSLog(@"object %@",obj);
    
               }
    
    
         }
        if (error) {
              [_delegate gotError:error forTable:TABLE_MEDIA];
         }
    }];
    

    Здесь, в приведенном выше фрагменте кода, он даст вам только сообщение, принадлежащее вашему текущему пользователю. Если вы хотите сообщение любого другого пользователя, вы должны пропустить экземпляр этого пользователя в запросе.

    Таким образом, чтобы иметь сообщения следующего пользователя, вы должны получить, что все следующие пользователи проанализированы с помощью указателей и имеют вышеуказанный запрос для получения своих сообщений.

    Чтобы иметь указатели в одной строке в массиве, обратитесь к приведенному ниже коду.

     [userClass addObject:userPointer forKey:@"following"];
    

    Итак, теперь, когда вы получите пользователя, у вас будут все следующие пользователи с указателем, и вы можете получить его сообщение с помощью приведенного выше фрагмента кода.

    12.01.2015
    Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..