Обновление в реальном времени из Firestore - PullRequest
0 голосов
/ 31 августа 2018

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

database.collection("_Products").getDocuments(completion: { (snapshot, error) in
        if error != nil {
            print(error as Any)
        }else{
            for document in (snapshot?.documents)! {
                let Name = document.data()["Item Name"] as! String
                let Price = document.data()["Item Price"] as! String
                let Number = document.data()["Item Number"] as! String
                let Brand = document.data()["Item Brand"] as! String
                let Quantity = document.data()["Quantity"] as! String
                let Category = document.data()["Item Category"] as! String
                DispatchQueue.main.async {
                    if instoreCheckOutArray.contains(where: {$0.Number == Number && $0.Brand == Brand}){
                        return
                    }else{
                        instoreCheckOutArray.append(checkOutArrayInfo(Brand: Brand, Name: Name, Number: Number, Price: Price, Quantity: Quantity, Category: Category))
                        self.searchForCoupon()
                    }
                }
            }
        }
    })

Затем я использую следующий код, чтобы каждую секунду запускать функцию для извлечения данных из базы данных:

timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCart), userInfo: nil, repeats: true)

Выполнение предыдущего кода прекрасно доставляет мне новые данные, но я не могу заставить приложение обновить существующий массив, чтобы он соответствовал базе данных, и когда я удаляю документ из базы данных, он остается в массиве.

Спасибо заранее.

1 Ответ

0 голосов
/ 31 августа 2018

1.Declare scrollingTimer переменная

var scrollingTimer = Timer()

2. Инициализируйте scrollingTimer с вашей функцией

scrollingTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateCart), userInfo: nil, repeats: true)

3. Запустите scrollingTimer (стреляйте туда, куда хотите)

scrollingTimer.fire()

Чтобы остановить таймер прокрутки, используйте следующую строку (остановите в любом месте)

scrollingTimer.invalidate()

Если есть, пожалуйста, обратитесь ссылка (DevelopersDocument)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...