0

This code is in my Entity+CoreDataProperties.swift file:

@nonobjc public class func mFetchRequest() -> NSFetchRequest<Entity> {
    return (getContext().persistentStoreCoordinator?.managedObjectModel.fetchRequestTemplate(forName: "MEntityRequest"))! as! NSFetchRequest<Entity>
}

In my NSFetchedResultsControllerDelegate extension code I call this function like so:

var fetchedResultsController: NSFetchedResultsController<Entity> {
    if _fetchedResultsController != nil {
        return _fetchedResultsController!
    }

    let fetchRequest: NSFetchRequest<Entity> = Entity.mFetchRequest()

    // Edit the sort key as appropriate.
    let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)

    fetchRequest.sortDescriptors = [sortDescriptor]

    let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master")
    aFetchedResultsController.delegate = self
    _fetchedResultsController = aFetchedResultsController

    do {
        try _fetchedResultsController!.performFetch()
    } catch let error as NSError{
        print("Unresolved Fetch Error \(error), \(error.userInfo)")
    }

    return _fetchedResultsController!
}

By setting the sortDescriptors on the fetch request I get the error: 'NSInternalInconsistencyException', reason: 'Can't modify a named fetch request in an immutable model.'

When I do not set the sortDescriptors: 'NSInvalidArgumentException', reason: 'An instance of NSFetchedResultsController requires a fetch request with sort descriptors'

What am I not doing correctly? Can NSFetchResultsController simply not use Fetch Request Templates?

daredevil1234
  • 1,303
  • 1
  • 10
  • 34

0 Answers0