2

У меня есть получатель результатов, который не вызывает его делегат, когда он имеет предикат. Предикат включать только объекты, которые имеют разговорные events:NSFetchedResultsController, не вызывающий делегат с предикатом @count

let predicate = NSPredicate(format: "[email protected] > 0") 

    let fetchRequest = Conversation.MR_requestAllSortedBy(
     "mostRecentMessage.eventDate", 
     ascending: false, 
     withPredicate: predicate) 
    self.fetchedResultsController = NSFetchedResultsController(
     fetchRequest: fetchRequest, 
     managedObjectContext: MagicalRecordStack.defaultStack()!.context, 
     sectionNameKeyPath: nil, 
     cacheName: nil) 
    self.fetchedResultsController.delegate = self 

    self.fetchedResultsController.MR_performFetch() 

Это работает для начальной выборки, но при данных добавляется, он не вызывает делегат. После удаления предиката он вызывает делегата.

Есть ли другой способ, которым я должен это делать?

+0

Имеет ли дополнительные данные требование 'events. @ Count> 0'? – FreeNickname

+0

Да. После перезапуска приложения (таким образом, вызывая 'performFetch'), он обновляет отображение добавленных данных. – Andrew

ответ

0

Предикат выборки может проверять только атрибуты Core Data, поскольку сами объекты остаются как ошибки. Предикат fetch не получает все объекты запрашиваемого объекта и затем фильтрует их, он просто извлекает те, которые передают предикат фильтра.

Как работа вокруг, вы можете получить объект Event. Затем используйте ключ раздела для группировки по разговору.

Смежные вопросы