При нажатии @ укажите номер телефона и отображаемое имя. - PullRequest
1 голос
/ 06 июля 2019

В настоящее время я включил отображаемое имя и номер телефона, как показано в коде. Но когда я показываю сообщение пользователю, оно должно показывать @displayName, а при отправке сообщения на сервер оно должно иметь вид @phoneNumber. Как получить этот функционал?

Я возвращаю текст и контекст с объектом автозаполнения в autocompleteManager, как мне извлечь этот контекст и отправить его на сервер

текущая функция автозаполненияManager

   func autocompleteManager(_ manager: AutocompleteManager, autocompleteSourceFor prefix: String) -> [AutocompleteCompletion] {
       if prefix == "@" {
           return self.contactsArray
               .map { user in
                   return AutocompleteCompletion(text: user.displayName,
                                                 context: ["id": user.phoneNumber,"text":user.displayName])
           }
       }else if prefix == "#" {
           return self.tasks
               .map { task in
                   return AutocompleteCompletion(text: task.title, context: ["id":task.documentID])
           }
       }
       return []
   }

строка ввода didPressSendButtonWith

    func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith text: String) {
        if let text = inputBar.inputTextView.text  {
            guard let id = serviceManager?.discussionService?.addMessage() else { return }
            let textWithNumber = replaceUserName(text: text)
            let message = DisscussionMessage(text: textWithNumber, user: (serviceManager?.authService?.getCurrentUser())!, messageId: id, date: Date(), groupId: self.group?.documentID ?? "")

            self.saveMessage(message)
        }
        inputBar.inputTextView.text = ""
        messagesCollectionView.scrollToBottom()
    }

В функции replaceUserName () я беру текст и заменяю имя, в начале которого стоит символ @.

...