Приложение для приватного чата — Parse и Swift

Я хочу создать приложение для приватного чата. Мой дизайн на данный момент представляет собой только UITableView, и я использую Parse (быстрое кодирование). На данный момент у меня работает часть отправки и получения (с каждой анимацией, такой как текстовое поле, которое растет вместе с клавиатурой и все такое), но я запрашиваю все сообщения в классе «сообщения», а не только сообщения, отправленные от user1 до user2. .. кто-нибудь из вас знает, как сделать запрос только определенного объекта? что я должен делать ?

Спасибо за вашу помощь

PS: Я долго искал, прежде чем задавать эти вопросы, и ничего не мог найти.


person Arnaud Planche    schedule 22.12.2015    source источник
comment
Надеемся, что в вашей таблице сообщений есть два пользовательских поля, указывающих пользователей башни, принимающих участие в разговоре. (или даже массив пользователей, если у вас есть группы). Затем вы используете where, чтобы уменьшить количество совпадающих строк, таких как findMessages.whereKey("otherUser", equalTo: conversationPartner) и т. д.   -  person luk2302    schedule 23.12.2015
comment
разве я не должен получать все сообщения, отправленные этому пользователю с этим?   -  person Arnaud Planche    schedule 23.12.2015
comment
это был очень сокращенный пример, включите второй, где также применяется второй пользователь   -  person luk2302    schedule 23.12.2015
comment
Вы можете использовать query.whereKey(sender, equalTo: user1) или что-то подобное   -  person Pranav Wadhwa    schedule 23.12.2015


Ответы (2)


Я считаю, что истинный ответ заключается в изменении структуры вашей модели. Что я предлагаю, так это создать класс под названием «Разговор» на синтаксическом анализе. Этот класс будет иметь:

  1. Элемент под названием «сообщения» (который представляет собой массив всех сообщений, отправленных/полученных в беседе)

  2. Участник с именем «участники» — массив строк идентификаторов участников, которые находятся в беседе (идентификаторы могут быть идентификаторами их объектов)

Тогда все, что вам нужно сделать, это запросить класс Conversation, гдеKey("участники", containsIn: ids), где "ids" - это [String] идентификаторов объектов участников (или любой идентификатор, который вы хотите).

Этот дизайн использует Layer: https://layer.com/

person mattyb    schedule 22.12.2015
comment
Спасибо за ваше предложение! я должен поместить сообщения в качестве указателя? если да, то как мне это сделать? и если нет: как я могу запросить сообщения тогда? - person Arnaud Planche; 23.12.2015
comment
Я создаю беседу в классе, но каждый раз, когда вы связываетесь с человеком, вы создаете новую беседу, а это не совсем то, что я ищу... У вас есть способ возобновить беседу, если она уже существует? ? - person Arnaud Planche; 23.12.2015
comment
Я не уверен, что вы имеете в виду под своим первым вопросом? Что касается вашего второго вопроса, вы можете просто запросить разговор, прежде чем создавать его, и проверить, возвращает ли этот запрос объект, если да, то вы знаете, что он существует, и вам не нужно делать еще один, чтобы создать новый. - person mattyb; 23.12.2015
comment
Если я создаю беседу, я считаю, что мне следует поместить сообщения в массив, чтобы получить их все одним выстрелом, но как я могу поместить эти сообщения в массив и получить все их данные (дата создания и текст) ? Я считаю, что это должен быть указатель, верно? но как я могу сделать массив указателей - person Arnaud Planche; 23.12.2015
comment
Кроме того, как я могу запросить имя отправителя и получателя? - person Arnaud Planche; 23.12.2015

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

С другой стороны, если вы настаиваете на синтаксическом анализе, возможно, вы можете использовать,

ссылка на метод PFObject +objectWithoutDataWithClassName:objectId: ниже,

https://parse.com/docs/ios/api/Classes/PFObject.html#/c:objc(cs)PFObject(cm)objectWithoutDataWithClassName:objectId:

Также найден пример приложения для чата Firebase здесь.

person mert    schedule 22.12.2015
comment
есть ли способ сделать мое приложение с обоими из них (Parse и Firebase)? потому что я действительно не хочу начинать снова с другой серверной системой - person Arnaud Planche; 23.12.2015