Сравнение результатов из базы данных Firebase Firestore - PullRequest
0 голосов
/ 29 апреля 2020

Я использую базу данных Firebase Firestore, и у меня есть таблица элементов, хранящихся в базе данных. Мое приложение позволяет пользователю выбрать 2 элемента. Я хочу иметь возможность сравнить эти два элемента.

Учитывая, что это асинхронный вызов, я использую обработчик завершения, чтобы убедиться, что информация получена. Однако я не могу понять, как я мог бы сравнить два непосредственно из асинхронных методов, как если бы я изменил уже инициированную переменную, это не изменится. Код ниже:

    if (selectedIndexes.contains(indexPath.row)) {
       selectedIndexes.remove(at: selectedIndexes.index(of: indexPath.row)!)
       navigationController?.navigationBar.isHidden = true
       cell!.accessoryType = UITableViewCell.AccessoryType.none
    } else {

        if selectedIndexes.count == 2 {

            selectedIndexes[0] = indexPath.row
        } else {
            if selectedIndexes.count == 0 {
            selectedIndexes.append(indexPath.row)
            print("anything?")
            getItem1(id: idArray[indexPath.row]) { res in
                print(res)
                item1 = res!
            }
            cell!.accessoryType = UITableViewCell.AccessoryType.checkmark
            }
            else{
             selectedIndexes.append(indexPath.row)
                getItem2(id: idArray[indexPath.row]) { res in
                    print(res)
                    item2 = res!
                    genderArray.append(gender)
                }
             cell!.accessoryType = UITableViewCell.AccessoryType.checkmark
            navigationController?.navigationBar.isHidden = false
            }
        }

Методы, которые я вызываю, чтобы получить предметы, как показано ниже:

func getItem1(id: String, completion: @escaping((String?) -> ()))  {

    let user = id

    var preference = ""

    let docRef = self.db.collection("users").document(user)
    docRef.getDocument { (document, error) in
            if let document  = document , document.exists {
             let newdoc = document as? [String:Any]

             let dataDescription = document.data().map(String.init(describing:)) ?? "nil"

            item1 = document["interestedIn"] as! String
            completion(item1)


            } else {
                print("Document does not exist")
                completion(nil)
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...