I have a UIViewController
subclass, MyViewController
, that has an NSFetchedResultsController
and an NSManagedObjectContext
. But when I go to create the NSFetchedResultsController
it says I don't have a managedObjectContext property on MyViewController
.
var managedObjectContext: NSManagedObjectContext!
var fetchedResultsController: NSFetchedResultsController = {
let fetchRequest = NSFetchRequest()
let entity = NSEntityDescription.entityForName("Post", inManagedObjectContext: self.managedObjectContext)
fetchRequest.entity = entity
fetchRequest.fetchBatchSize = 50
}()
Don't I clearly have a managedObjectContext variable declared right before it? What am I doing wrong?
The initializer of a property cannot reference another property in the same class unless you declare it as a lazy computed property.
You also forgot to return a fetched results controller from the closure.
var managedObjectContext: NSManagedObjectContext!
lazy var fetchedResultsController: NSFetchedResultsController = {
let fetchRequest = NSFetchRequest()
let entity = NSEntityDescription.entityForName("Post", inManagedObjectContext: self.managedObjectContext)
fetchRequest.entity = entity
fetchRequest.fetchBatchSize = 50
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
return fetchedResultsController
}()