Почему эта процедура фильтра так медленно? - PullRequest
0 голосов
/ 01 мая 2020

Я впервые использую CoreData в своем приложении, и когда я фильтрую свои данные, для их фильтрации требуется 20-30 секунд. Представление списка имеет плавающую кнопку, которая при нажатии позволяет пользователю выбирать, по какому состоянию он хочет фильтровать. Нажав на это, вы вернетесь к представлению списка, и оно будет отображаться замороженным во время обработки. Данные, которые он возвращает, точны, просто кажется, что это займет гораздо больше времени, чем следовало бы. Максимум 3600 записей, поэтому это должно быть немедленно.

Это код, который заполняет мой отфильтрованный список.

init(categoryFilter: String, stateFilter: String) {
  if (categoryFilter.count > 0 && stateFilter.count > 0){
       let predicate = NSPredicate(format: "category BEGINSWITH %@ AND state BEGINSWITH %@", categoryFilter, stateFilter)
       fetchRequest = FetchRequest<Bonus>(entity: Bonus.entity(), sortDescriptors: [], predicate: predicate)
   } else if (categoryFilter.count > 0 && stateFilter.count <= 0){
       let predicate = NSPredicate(format: "category BEGINSWITH %@", categoryFilter)
       fetchRequest = FetchRequest<Bonus>(entity: Bonus.entity(), sortDescriptors: [], predicate: predicate)
   } else if (categoryFilter.count <= 0 && stateFilter.count > 0){
       let predicate = NSPredicate(format: "state BEGINSWITH %@", stateFilter)
       fetchRequest = FetchRequest<Bonus>(entity: Bonus.entity(), sortDescriptors: [], predicate: predicate)
   } else {
       fetchRequest = FetchRequest<Bonus>(entity: Bonus.entity(), sortDescriptors: [])
   }

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

Есть идеи, что я делаю неправильно?

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