• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: [Core Data] Difference between objectWithID: and a fetch "self IN %@", someObjectIDs ????
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Core Data] Difference between objectWithID: and a fetch "self IN %@", someObjectIDs ????


  • Subject: Re: [Core Data] Difference between objectWithID: and a fetch "self IN %@", someObjectIDs ????
  • From: Aurélien Hugelé <email@hidden>
  • Date: Fri, 22 May 2009 07:50:18 +0200


That's very clear, thanks for the explanation!

Aurélien,
Objective Decision Team




On 20 mai 09, at 21:15, Ben Trumbull wrote:

In the main thread, using objectWithID: repeatedly on each objectID
sent by the subthread returns the object that was inserted in the
background thread. This is exactly what I want.
But reading from the doc, it seems that we are encouraged to use a
fetch using "self IN %@",listOfObjectIDs instead of objectWithID:
since it is faster for many objects...

Unfortunately, this fetch returns 0 results (and yes this is the
correct entity, store and moc...)

The objects probably haven't been saved yet.

what does objectWithID: *exactly* do that a fetch does not ??

Imagine the NSPersistentStoreCoordinator has a cache of row data for recently fetched or saved objects. This cache is used to fulfill faults quickly. Faulting becomes very slow when it needs to go all the way to the database due to a cache miss. The Core Data template in Instruments shows this.


But cache hits are very fast. This is how most managed objects get initialized.

Fetching always goes to disk and gets the latest values from the database. Those values are then added to the PSC's cache.

-objectWithID: creates a fault. When you access the fault's data, it first tries to populate the data from the PSC's cache. If it can't, then it goes to disk.

The documentation is showing how to load a number of objects at once. If the objects are unlikely to already be cached, then fetching all of them in 1 transaction will be much faster than faulting them in one at a time via -objectWithID:

- Ben


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >re:[Core Data] Difference between objectWithID: and a fetch "self IN %@", someObjectIDs ???? (From: Ben Trumbull <email@hidden>)

  • Prev by Date: Re: Getting other application's window/document name
  • Next by Date: Re: Compiler does not synthesize KVO compliant properties for CATiledLayer subclass (was: Synthesized properties for scalars not KVO compliant)
  • Previous by thread: re:[Core Data] Difference between objectWithID: and a fetch "self IN %@", someObjectIDs ????
  • Next by thread: Network Reachability APIs
  • Index(es):
    • Date
    • Thread