*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray
<p>why do I keep getting the following error </p>

<blockquote>
  <p><strong>* Terminating app due to uncaught exception 'NSRangeException', reason: '*</strong> -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray'
  *** First throw call stack:
  (0x183702db0 0x182d67f80 0x1836799ac 0x18d48f6d4 0x10003999c 0x100039b04 0x188860c40 0x1888790d0 0x188a13e5c 0x18891fe40 0x18891fb1c 0x18891fa84 0x194f41fd0 0x18885c1e4 0x1861ee994 0x1861e95d0 0x1861e9490 0x1861e8ac0 0x1861e8820 0x18885eff4 0x1836b909c 0x1836b8b30 0x1836b6830 0x1835e0c50 0x184ec8088 0x1888ca088 0x10003fd7c 0x18317e8b8)
  libc++abi.dylib: terminating with uncaught exception of type NSException</p>
</blockquote>

<p>the code for my initial viewcontroller is given below</p>

<pre><code>import UIKit
import CoreData
class NotesListTableViewController: UITableViewController  {
var managedObjectContext : NSManagedObjectContext!
var entries: [NSManagedObject]!

override func viewDidLoad()
{
    super.viewDidLoad()


    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    managedObjectContext = appDelegate.managedObjectContext
    //self.fetchEntries()

          // makes the searchbar stay in the current screen and not spill into the next screen
//definesPresentationContext = true

    // Uncomment the following line to preserve selection between presentations
    // self.clearsSelectionOnViewWillAppear = false

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - Table view data source



override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int
{
    return self.entries.count


}
override func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int
{
    return 1
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell
{
    let cell = tableView.dequeueReusableCellWithIdentifier("NotesCell", forIndexPath: indexPath)

    // Configure the cell...
        let entry1 = entries[indexPath.row]
        cell.textLabel?.text = entry1.valueForKey("entry_body") as? String


        let imageData2 = entry1.valueForKey("entry_image") as? NSData

        if let imageData2 = imageData2
        {
            let myimage = UIImage(data:imageData2,scale:1.0)
            cell.imageView?.image = myimage
        }





    return cell

}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier! == "showNote"
    {
        let detailDisplay = segue.destinationViewController as! DetailDisplayViewController
        let selectedIndexPath = tableView.indexPathForSelectedRow!
        let entry = entries[selectedIndexPath.row]
        detailDisplay.entry = entry
    }
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
    let entry1 = self.entries[indexPath.row]
    self.managedObjectContext.deleteObject(entry1)
    self.entries.removeAtIndex(indexPath.row)
    self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
    do
    {
        try managedObjectContext.save()
    } catch  {
        print ("could not save the new entry ")
    }


}
override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)
    self.tabBarController?.tabBar.hidden = false

    self.fetchEntries()

}

func fetchEntries()
{
    let fetchRequest = NSFetchRequest(entityName:"Entry")
    do {
        let entryObjects = try managedObjectContext.executeFetchRequest(fetchRequest)
        self.entries = entryObjects as! [NSManagedObject]
    }catch let error as NSError
    {
        print ("could not save the new entry \(error.description) ")
    }
    tableView.reloadData()



}
}
</code></pre>