title: Why does NSFetchRequest with .dictionaryResultType does not return results while the request without dictionaryResultType does?
body: <p>When I do a NSFetchedRequest using .dictionaryResultType I don't get any results. If I do the same fetch request not using the dictionaryResultType I do get results. </p>
  
  <p>Here's what I do:</p>
  
  <p>I create an entity in viewcontext like so:</p>
  
  <pre><code>class func createNew(in context: NSManagedObjectContext) -&gt; Picture? {
      let mo = Picture(context: context)
      mo.id = UUID.init()
      mo.created = timeStamp
      mo.modified = mo.created
      mo.user = SP.user        
      return mo
  }
  </code></pre>
  
  <p>Picture is an NSManagedObject.</p>
  
  <p>The context is created in a CoreDataHelper class like this:</p>
  
  <pre><code>lazy var viewContext: NSManagedObjectContext = {
      let context:NSManagedObjectContext = self.persistentContainer.viewContext
      context.automaticallyMergesChangesFromParent = true
      context.undoManager = nil
      return context
  }()
  </code></pre>
  
  <p>I fetch like this:</p>
  
  <pre><code>static var removedSinceLastSync: [[String:Any]]? {
      let context = CDH.shared.viewContext
      let req = NSFetchRequest&lt;NSFetchRequestResult&gt;(entityName: Picture.className)
      req.resultType = NSFetchRequestResultType.dictionaryResultType
      req.propertiesToFetch = ["id", "removed"]
      let lastSyncForTable =  0
      let predicate = NSPredicate(format: "removed &gt; %i", lastSyncForTable)
      req.predicate = predicate
  
      do {
          let results = try context.fetch(req)
          if results.count &gt; 0 {
              return results as? [[String: Any]]
          }
          return nil
      } catch let error as NSError {
          print(error)
          return nil
      }
  }
  </code></pre>
  
  <p>The fetch always returns 0 results when I use the dictionaryResultType, but if I change the fetch to not use dictionaryResultType, it always returns the newly added managed object as result:</p>
  
  <pre><code>static var removedSinceLastSync: [Picture]? {
      let context = CDH.shared.viewContext
      let req = NSFetchRequest&lt;NSFetchRequestResult&gt;(entityName: Picture.className)
  
      let lastSyncForTable =  0
      let predicate = NSPredicate(format: "removed &gt; %i", lastSyncForTable)
      req.predicate = predicate
  
      do {
          let results = try context.fetch(req)
          if results.count &gt; 0 {
              return results as? [Picture]
          }
          return nil
      } catch let error as NSError {
          print(error)
          return nil
      }
  }
  </code></pre>
  
  <p>Interestingly, if I save the context after adding the new managed object, the fetch with the dictionaryResultType, does return a result. So, I have two possible solutions to resolve this, but don't like either of them. </p>
  
  <p>Have I stumbled on a bug (using Xcode 10 GM) or is this expected behaviour? If expected behaviour, why, and is there another way to get only the two attributes I'm interested in without saving the context before, but still using dictionaryResultType.  (I prefer to use dictionaryResultType to reduce memory footprint of app, as the request can deliver thousands of objects and the entity has some big attributes in it). </p>