Over the years that Core Data has been in production, there have been a few complaints about the framework that struck home and were accurate. Easily the most well-known complaint was regarding the ability to change a value in a large number of objects without requiring those objects to all be loaded into memory and then persisted back out to disk. The second most well-known complaint was about deleting a large number of objects. Again, the desire is to delete a large number of objects without having to load them into memory and then write back out to the persistent store again.
Both of these complaints only apply to the NSSQLite store. Since atomic stores such as the binary store require all of the data to be in memory, there’s no issue with doing bulk changes or bulk deletes. But with the SQLite store, either of these changes can be incredibly CPU, disk, and memory intensive.
With the introduction of iOS 8.0 and OS X Yosemite, the first complaint was addressed. With the introduction of iOS 9.0 and OS X El Capitan, the second complaint was addressed.