目前,我已经包含了显示名称和电话号码,如代码所示。但是当我向用户显示消息时,它应该显示@displayName,而当将消息发送到服务器时,它应该显示为@phoneNumber。如何拥有这个功能?
我在 autocompleteManager 中返回带有 AutoCompletion 对象的文本和上下文,如何检索此上下文并将其发送到服务器
当前的 autocompleteManager 函数
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() 函数中,我正在获取文本并替换开头有 @ 的名称。