Подскажите плз, когда лучше использовать 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
}()