Я новичок в Swift Programming и FireBase, я реализовал приложение чата, в котором я сохранил счетчик сообщений, используя идентификатор отправителя и получателя, на стороне получателя получаю счет отлично, но когда добавляется новый счетчик в FireBase, я хочу получить это новый счет, для этого я использовал таймер для вызова функции каждые 10 секунд, я получаю счет отлично, но моя проблема в том, что таймер работает постоянно, приложение зависает и медленно, после того, как иногда я не отвечаю, кто-нибудь может подсказать мне, как вызывайте функцию каждые 10 секунд или как использовать таймер.
Здесь я попробовал этот код,
var timer = Timer()
override func viewWillAppear(_ animated: Bool) {
MessageCountingFunction()
}
func MessageCountingFunction(){
//getting count details
keyvalue.removeAllObjects()
countarray.removeAllObjects()
let ref = FIRDatabase.database().reference()
ref.child("CountDetails").child(AuthManager.User.id.value).observeSingleEvent(of: FIRDataEventType.value, with: { (snapshot) in
if let cakeSnapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {
for cakes in cakeSnapshot {
print(cakes)
if let cakeDictionary = cakes.value as? Dictionary <String, Any> {
print(cakeDictionary)
let count = cakeDictionary["Count"]
let key = cakes.key as String
//your class that takes a key as String and a Dictionary
print(count as Any)
print(key)
self.keyvalue.add(key)
self.countarray.add(count!)
}
}
DispatchQueue.global().sync {
print(self.keyvalue)
print(self.countarray)
self.tableView.reloadData()
}
}
})
DispatchQueue.main.async {
self.timer = Timer.scheduledTimer(timeInterval: 10, target: self, selector: #selector(self.MessageCountingFunction), userInfo: nil, repeats: true)
}
}