For more about faulting, and in particular the meaning of the value returned from Sometimes you need to use managed objects on a temporary basis, for example, to calculate an average value for a particular attribute.Loading a large number of objects into memory causes your object graph, and memory consumption, to grow.As the complexity of an application increases, the proportionate overhead that Core Data imposes typically decreases. Implementing and supporting undo and redo in a large application, for example, is usually difficult.uses an internal storage mechanism for data that is highly optimized.In particular, it leverages the information about the types of data that is available through introspecting the model.When you store and retrieve data in a manner that is compliant with key-value coding and key-value observing, it is likely that using will be faster than any other storage mechanism—including for the simple get/set cases.
Note, though, that this technique can be fragile—if the application changes and needs a different set of data, you can end up prefetching the wrong objects.
Core Data automatically resolves (fires) the fault when you access data in the fault.
This lazy loading of the related objects is much better for memory use, and much faster for fetching objects related to rarely used (or very large) objects.
Note, however, that invoking key-value coding methods on the collection object might in turn result in an invocation of method that accesses the object’s persistent properties, this will cause a fault to fire.
Note that just because a managed object is a fault, it does not necessarily mean that the data for the object is not in memory—see the definition for ), the destination of a relationship is represented by a fault.