Search code examples
iosswiftcore-datanspredicatensfetchrequest

objectID not found error while fetching NSManagedObject context in Core Data


I am trying to access an NSManagedObject based on the "objectID". From what I have read its saying that every NSManagedObject will have a unique "objectID". But when I am trying to access an object based on the "objectID" I am getting the following error.

CoreData: error: SQLCore dispatchRequest: exception handling request: , keypath objectID not found in entity with userInfo of (null)

func loadPlayerDetailsFromCoreData() {
    let fetch = Player.fetchRequest() as NSFetchRequest
    // Create Predicate
    let predicate = NSPredicate(format: "objectID == %@", selectedPlayerID!)
    fetch.predicate = predicate
    do {
        let player = try appDelegate.coreDataStack.managedObjectContext.fetch(fetch)
        print("Player selected = \(String(describing: player.first?.name))")
    } catch {
        print("Failed")
    }
}

Solution

  • To access an NSManagedObject based on the objectID, you only need to write

    appDelegate.coreDataStack.managedObjectContext.object(with: selectedPlayerID)
    

    Check it here Apple Doc object(with:)