       @discussion   The fetch request must have the `resultsType` set to `ManagedObjectIDResultType`.
     */
     public func fetchIDs(request: NSFetchRequest) -> CoreDataObjectIDFetchResults {
+        assert(request.resultType == .ManagedObjectIDResultType, "The fetch request must be configured to return managed object identifiers")
         var error: NSError?
         let results = context.executeFetchRequest(request, error: &error) as [NSManagedObjectID]?
         return (results, error)

      @discussion   The fetch request must have the `resultsType` set to `CountResultType`.
    */
    public func count(request: NSFetchRequest) -> CoreDataCountFetchResults {
        var error: NSError?
        var resultCount = context.countForFetchRequest(request, error: &error)
        if error != nil {

      @discussion   The fetch request must have the `resultsType` set to `ManagedObjectResultType` (which it is by default).
    */
    public func fetch(request: NSFetchRequest) -> CoreDataObjectFetchResults {
        assert(request.resultType == .ManagedObjectResultType, "The fetch request must be configured to return managed objects")
        var error: NSError?
        let results = context.executeFetchRequest(request, error: &error) as [NSManagedObject]?
        return (results, error)
