Firebase возвращает значения после цикла - PullRequest
0 голосов
/ 18 июня 2020

Я пытался создать приложение, которое позволяет мне искать, содержит ли продукт определенный элемент. Я использую базу данных firebase для хранения ингредиентов предметов, но с моей программой все еще возникает та же проблема. Каждый раз, когда я использую функцию, которая должна проверять ингредиенты, она продолжает использовать одно и то же значение, а затем получает все данные после l oop.

Test2: for _ in 1...10000{
    d = d + 1
    print(d)
    let refer = Database.database().reference()
    refer.child("\(Search)/Ingredients/Contains/\(d)").observeSingleEvent(of: .value) {
        (snapshot) in ISITIN = snapshot.value as? String ?? "Error"
        print(ISITIN)
    }
    print(ISITIN)
    sleep(2)
    if (ISITIN == String(Allergy)){
        Test.text = "This product contains \(Allergy)"
        break Test2
    }
    else if (ISITIN == String("Error")){
        Test.text = "There has been an error"
        break Test2
    }
    if d == Results {Test.text = "This product doesn't contain \(Allergy)"; break Test2}
}

вот результат

1,
Tomato,
2,
Tomato,
3,
Tomato,
4,
Tomato,
5,
Tomato,
Tomato,
Sugar,
Salt,
Vitamin C,
Citric Acid,

enter image description here

вот что означают значения, которые не определены в фрагменте кода: Результаты - это количество ингредиентов, Search - это продукт, который я ищу для этого примера это томатный сок Woolworths, аллергия - это ингредиент, который я ищу для продукта. Для пояснения Tomato - это значение по умолчанию для ISITIN

.
...