Вы обновляете тот же документ, который запрашиваете. А поскольку вы используете addSnapshotListener
, слушатель остается активным после того, как впервые получит данные. Поэтому, когда вы вызываете setData
в документе, ваш слушатель снова запускается, что снова вызывает setData
, и это ваш бесконечный l oop.
Решение здесь - использовать getDocuments
вместо addSnapshotListener
. С getDocuments
вы читаете данные только один раз, поэтому обновление не запускает их снова.
fireStoreDB.collection("Users")
.whereField("email", isEqualTo: info.email)
.getDocuments(includeMetadataChanges: false) { (snapshot, error) in
...
Остальную часть вашего кода менять не нужно.