@sportredwhite

Когда использовать NSFetchRequest, а когда NSFetchedResultsController?

Подскажите плз, когда лучше использовать NSFetchRequest, а когда NSFetchedResultsController?

Попытаюсь описать в чём проблема)

1. NSFetchRequest

Когда использую NSFetchRequest, то мне приходится создавать новый массив и выгружать туда результат запроса.

var categories: [Category] = [] {
        didSet {
            tableView.reloadData()
        }
    }


Выгружаю в viewDidLoad:

context = CoreDataStack.shared.managedContext
        let request: NSFetchRequest<Category> = Category.fetchRequest()
        
        do {
            if let result = try context?.fetch(request) {
                categories = result // сохраняю в массив
            }
        } catch let error as NSError {
            print("Error fetch request: \(error)")
        }


Далее использую массив, чтобы вывести в ячейках. Тут мне не нравится, что приходится создавать массив, можно ли использовать NSFetchRequest но без создания массива? Или это нормальный подход?

2. NSFetchedResultsController

Тут мне не нравится, что нужно обязательно использовать Descriptor без него NSFetchedResultsController не будет работать. Можно ли как нибудь это обойти, мне не нужна сортировка.

lazy var fetchResultController: NSFetchedResultsController<Category> = {
        
        let context = CoreDataStack.shared.managedContext
        let request: NSFetchRequest<Category> = Category.fetchRequest()
        
        let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
        request.sortDescriptors = [sortDescriptor]
        
        let fetchedResultsController = NSFetchedResultsController(fetchRequest: request, managedObjectContext: context, sectionNameKeyPath: nil, cacheName: nil)
        
        fetchedResultsController.delegate = self
        
        return fetchedResultsController
    }()
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы