Alexey K
Alexey K

Reputation: 6723

Core Data - why fetch request returns nil?

I have code, which fetches core data

    var appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    var managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
    let request = NSFetchRequest(entityName: "QuestionDB")
    request.returnsObjectsAsFaults = false
    if let results = managedContext.executeFetchRequest(request, error: nil)

it returns array of AnyObject

I need it to return array of objects with type of [Question]

when i cast

    var appDelegate : AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    var managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
    let request = NSFetchRequest(entityName: "QuestionDB")
    request.returnsObjectsAsFaults = false
    if let results = managedContext.executeFetchRequest(request, error: nil) as? [Question] {
        println("This is result of loadFromDb \(results)")
    }

it returns nil

How can i fix it ?

Upvotes: 3

Views: 2219

Answers (2)

Akhilrajtr
Akhilrajtr

Reputation: 5182

Check class name in data model inspector of Entity in data model by

select your app's .xcdatamodeld -> select Entity and in data model inspector

enter image description here

Upvotes: 1

matthias
matthias

Reputation: 947

Try this:

    let fetchRequest = NSFetchRequest(entityName:"QuestionDB")

    var error: NSError?

    let fetchedResults = managedObjectContext.executeFetchRequest(fetchRequest, error: &error) as! [NSManagedObject]?

    if let results = fetchedResults {
        return results  as! [QuestionDB]
    } else {
        fatalError("Could not fetch \(error), \(error!.userInfo)")
    }

If your class name is Question you have to set it in the model inspector.

Upvotes: 0

Related Questions