Проверка и сравнение сообщений в Swift и Firebase

#swift #firebase #firebase-realtime-database #swift5

# #swift #firebase #firebase-база данных в реальном времени #swift5

Вопрос:

Как мне сравнить ответы двух людей и рассчитать процент сходства? Например, в моей базе данных ниже Кевин ответил на QuestionID «да», а на questionId1 — «нет». Джон ответил «да» и «да». Я бы хотел, чтобы вывод показывал 50%, учитывая, что у них один и тот же ответ для 1 и другой ответ для другого.

Я пытаюсь это сделать, но не уверен, как сравнивать других пользователей:

 func calculatePercentage(completion: @escaping ([String])->()) {
    let postRef = self.databaseRef.child("responses").child("Kevin")
        postRef.observeSingleEvent(of: .value, with: { (snapshot) in
            var userIdArray = [String]()
                for topic in snapshot.children.allObjects as! [DataSnapshot] {
                    let question1 = topic.childSnapshot(forPath: "questionId").value
                    let question2 = topic.childSnapshot(forPath: "questionId1").value
                    userIdArray.append(topic as! String)
                }
            completion(userIdArray)
        })

}
 

введите описание изображения здесь

Комментарии:

1. Взгляните на алгоритм Левенштейна для вычисления процента сходства

2. Я не знаю о Левенштейне, но не сработало бы следующее (questionsWithSameAnswer / totalNumberOfQuestions) * 100

3. Спасибо! Существует ли простая формула для вычисления questionswithsameanswer? У меня есть массив [«вопрос1: да», «вопрос2: нет»] — как мне сравнить и посчитать те же ответы с другим массивом [«вопрос1: да», «вопрос2: да»]?

Ответ №1:

  1. извлеките все ответы, которые вы хотите сравнить, в виде словаря, массивов или объектов. Для получения дополнительной информации и примера см. Документ firebase read_data.
  2. Сравните каждый вопрос, он одинаковый или нет. затем подсчитайте количество одинаковых ответов.
  3. Как писал Йоаким Даниельсон, вычисление

percentageOfSameAnswer = (numberOfSameAnswers/numberOfAllQuestions)*100

Комментарии:

1. Спасибо! Я застрял на части «сравнить каждый вопрос». У меня есть массив [«вопрос1: да», «вопрос2: нет»] — как мне сравнить и посчитать те же ответы с другим массивом [«вопрос1: да», «вопрос2: да»]?