# #swift #firebase #firebase-realtime-database #collections #uicollectionviewcell
Вопрос:
Я столкнулся с проблемой скорости загрузки после увеличения данных изображений.
Что я сделал
Я использую Firebase DB для извлечения категорий внутри вложенного CollectionView, затем, используя эти категории, я пытаюсь получить изображение для этих категорий.У меня есть 50 категорий и 40 изображений во всех этих категориях , в настоящее время я пытаюсь получить изображения всех категорий, используя для каждого цикла по категориям и используя firebase observeSingleValue, чтобы получить эти изображения категорий и сохранить их в локальном массиве, но по мере загрузки данных загрузка процессора увеличивается до 100% при запуске, а объем памяти продолжает увеличиваться по мере запуска большего количества observeSingleValue.
- удаление наблюдателей даже при использовании Firebase observeSingleValue
- не сохраняя URL-адрес изображения в локальном массиве или не перезагружая данные CollectionView,использование памяти и процессора остается прежним
- попробовал использовать DispatchGroup()
- загрузка изображений 5-10 категорий сначала только, а затем загрузка большего количества по мере прокрутки пользователя вниз, но в этом методе, когда пользователь переходит к последней категории . память и процессор снова превышают 100% и 1 ГБ, и приложение выходит из строя из-за нехватки памяти
из того, что я диагностировал , проблема, похоже, заключается в использовании более 50 наблюдателей, но удаление наблюдателей не помогло
, я новичок в IOS, пожалуйста, направьте меня, если я делаю что-то не так, или скажите мне, как лучше всего получить данные о нескольких категориях
Редактировать : Найден виновник, после отключения firebase setPersistenceEnabled(true) приложение работает нормально, и все категории и их изображения загружаются нормально без использования большого количества ресурсов. но я хочу сохранить setPersistenceEnabled(true) для автономного использования , как мне это сделать?
код для получения изображений категорий :
'''
//Firebase persistanceEnabled
Database.database().isPersistenceEnabled = true
// for getting categories images
for category in self.simpleCategories{
var handle : UInt = category.id as! UInt
let templatesReference = self.ref.child("templates").queryOrdered(byChild:
"CategoryId").queryEqual(toValue: category.id)
//templatesReference.keepSynced( true )
handle = templatesReference.observe( .value, with: { [self] (snapshot) in
//Going To Get Children values
for node in snapshot.children.allObjects as! [DataSnapshot] {
let templatgeData = node.value as? NSDictionary
let templateImage = templatgeData?["ImageUrl"] as? String ?? ""
templateArray.append(template)
}
//closing observer here
templatesReference.removeObserver(withHandle: handle)
}
if i remove this line
Database.database().isPersistenceEnabled = true
приложение работает нормально и использует только 100-200 Мб памяти