The Nomad
The Nomad

Reputation: 7425

NSFetchedResultsController crashing when creating it, objc_exception_throw

I am receiving a objc_exception_throw when creating my NSFetchedResultsController. I am relatively new to iOS programming so I am still getting the hang of debugging iOS crashes.

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
lazy var parentContext: NSManagedObjectContext? = {
    if let managedObjectContext = self.appDelegate.managedObjectContext {
        return managedObjectContext
    }
    else {
        return nil
    }
    }()

lazy var fetchedResultsController: NSFetchedResultsController = {
    let request = NSFetchRequest()
    let entity = NSEntityDescription.entityForName("GameDate", inManagedObjectContext: self.parentContext!)
    request.entity = entity
    let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil)
    frc.delegate = self
    return frc
}()

override func viewDidLoad() {
    super.viewDidLoad()
    performFetchFromDb()
    setupTableView()
}

I am getting the crash on this line:

let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil)

Does this crash have something to do with my context?

Upvotes: 1

Views: 318

Answers (1)

The Nomad
The Nomad

Reputation: 7425

I was missing an NSSortDescriptor in my fetch request. This fixed it:

lazy var fetchedResultsController: NSFetchedResultsController = {
    let request = NSFetchRequest()

    let entity = NSEntityDescription.entityForName("GameDate", inManagedObjectContext: self.parentContext!)
    request.entity = entity

    let gameTimeSort = NSSortDescriptor(key: "gameTime", ascending: false)
    request.sortDescriptors = [gameTimeSort]

    let frc = NSFetchedResultsController(fetchRequest: request, managedObjectContext: self.parentContext!, sectionNameKeyPath: nil, cacheName: nil)
    frc.delegate = self
    return frc
}()

Upvotes: 3

Related Questions