Core Data - Accessing Relationship Objects vs. Fetchrequest

I'm wondering if there is a difference between accessing relationship objects directly vs. fetching them with a fetchrequest. What is more efficient and what is Core Data doing under the hood?

Example:

Let's pretend I have the entities 'Car' and 'Color' with many to many relationship. When I fetch a Car, it's relationship to its colors is a fault until I access it.

What does happen when I access it with car.colors ? Is Core Data fetching these Color objects under the hood or have they been there already all the time since fetching the Car object?

Does it make a performance difference when instead fetching the colors by a fetchrequest? -> fetchColors(for: car)

Found this passage in Apples Core Data Documentation:

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreData/FaultingandUniquing.html

When a fault is fired, Core Data does not go back to the store if the data is available in its cache. With a cache hit, converting a fault into a realized managed object is very fast—it is basically the same as normal instantiation of a managed object. If the data is not available in the cache, Core Data automatically executes a fetch for the fault object; this results in a round trip to the persistent store to fetch the data, and again the data is cached in memory.

For my understanding it basically says that doing a fetchrequest manually and accessing the fault data is not a big difference when the concerning data wasn't available in cache yet.

Core Data - Accessing Relationship Objects vs. Fetchrequest
 
 
Q