Фильтрация результатов NSFetchedResultsController во время выполнения - PullRequest
1 голос
/ 04 апреля 2011

Какой лучший способ реализовать фильтрацию объектов Core Data во время выполнения с помощью NSFetchedResultsController?

Например, я хочу иметь возможность отображать все сущности Record в сущности RecordStore, но также фильтровать все записи в RecordStore для некоторых предопределенных критериев, например (ANY recordStore.records.count> 0).

Я прочитал, что изменение предиката NSFetchedResultsController после того, как он был создан, является некорректным. Так должен ли я сохранить полученные результаты в NSArray, который я могу отфильтровать и использовать в качестве источника данных UITableView, или я должен создать несколько NSFetchedResultsControllers?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Вы можете повторно получить данные, когда вам нужно обновить.Если сами данные изменились, то вы можете просто вызвать fetch снова.Если ваши критерии изменились, установите предикат в NSFetchedResultsController и вызовите fetch.

0 голосов
/ 09 июня 2017

Создайте экземпляр NSFetchRequest, каждый раз обновляйте запрос и выполняйте выборку.Удалите кеш, если вы используете:

    let shortDescriptor = NSSortDescriptor(key: key, ascending: ascending)


    fetchedResultViewController.fetchRequest.sortDescriptors = [shortDescriptor]

    NSFetchedResultsController<NSFetchRequestResult>.deleteCache(withName: fetchedResultViewController.cacheName)

    do {
        try fetchedResultViewController?.performFetch()
    } catch let error as NSError {
        print("Error in fetch \(error)")
    }

Прочитайте документ Apple: https://developer.apple.com/reference/coredata/nsfetchedresultscontroller

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