EOModelGroup
Inherits from: NSObject
Conforms to: NSObject
(NSObject)
Declared in: EOAccess/EOModelGroup.h
Class Description
An EOModelGroup represents an aggregation of related models (see the EOModel class specification for more information on models). When a model in the group needs to resolve a relationship to an entity in another model, it looks for that model in its group. Model groups allow applications to load entities and their properties only as they're needed, by distributing them among separate EOModels.
The default model group contains all models for an application, as well as any frameworks the application references. It is automatically created on demand. The entity name space among all of these models is global; consequently, the same entity name shouldn't appear in any two of the models. All cross-model information is represented in the models by entity name only. Binding the entity name to an actual entity is done at run-time within the EOModelGroup.
In the majority of applications, the automatic creation of the default model group is sufficient. However, your code can override this automatic creation; see "Setting Up A Model Group Programmatically" .
Accessing Models Within a Model Group
Each model lives within a group and can form connections to other models in its group. A model can find a related model using the statement:
[[self modelGroup] modelNamed:name];
A data source can locate a model using the statement:
[[EOModelGroup defaultGroup] modelNamed:name];
EOModeler puts models with identical names in separate groups to allow you to load two models with the same name at the same time.
EOModelGroup Delegates
Your EOModelGroup object should have a delegate which can influence how it finds and loads models. In addition to the delegates you assign to EOModelGroup instances, the EOModelGroup class itself can have a delegate. The class delegate implements a single method- defaultModelGroup-while the instance delegate can implement the methods defined in the EOModelGroup Delegate protocol. For more information on EOModelGroup class delegate and instance delegate methods, see the EOModelGroup Class Delegate and EOModelGroup Delegate protocol specifications, respectively. Note that the following delegate methods are set on EOModelGroup, rather than EOEntity, to provide a single point in the code where you can alter the database-to-objects mapping:
- entity:classForObjectWithGlobalID:
- entity:failedToLookupClassNamed:
- entity:relationshipForRow:relationship:
- subEntityForEntity:primaryKey:isFinal:
Constants
In EOModelGroup.h, EOModelGroupEOAccess defines NSString constants for the names of the notifications it posts. For more information on these notifications, see "Notifications" .
Method Types
- Accessing models
- - addModelWithFile:
- - modelNamed:
- - modelNames
- - models
- - modelWithPath:
- - removeModel:
- Accessing model groups
- + defaultGroup
- + setDefaultGroup:
- + globalModelGroup
- Searching a group
- - entityNamed:
- - entityForObject:
- - entitiesWithSharedObjects
- - fetchSpecificationNamed:entityNamed:
- - storedProcedureNamed:
- Loading all of a group's objects
- - loadAllModelObjects
- Assigning a delegate
- + classDelegate
- - delegate
- + setClassDelegate:
- - setClassDelegate:
Class Methods
classDelegate
+ (id)classDelegate
See Also: + setClassDelegate:
defaultGroup
+ (EOModelGroup *)defaultGroup
-nil
value,
this method is equivalent to globalModelGroup.See Also: + classDelegate
globalModelGroup
+ (EOModelGroup *)globalModelGroup
See Also: + defaultGroup
setClassDelegate:
+ (void)setClassDelegate:(id)anObject
See Also: + classDelegate, - defaultModelGroup
setDefaultGroup:
+ (void)setDefaultGroup:(EOModelGroup
*)group
-nil
value,
the delegate's return value overrides group as
the default model group.See Also: + defaultGroup, + setClassDelegate:
Instance Methods
addModel:
- (void)addModel:(EOModel
*)model
addModelWithFile:
- (EOModel *)addModelWithFile:(NSString
*)path
delegate
- (id)delegate
See Also: - setClassDelegate:, + classDelegate
entitiesWithSharedObjects
- (NSArray *)entitiesWithSharedObjects
entityForObject:
- (EOEntity *)entityForObject:(id)object
See Also: - entityForObject: (EOModel)
entityNamed:
- (EOEntity *)entityNamed:(NSString
*)entityName
See Also: - entityNamed: (EOModel)
fetchSpecificationNamed:entityNamed:
- (EOFetchSpecification *)fetchSpecificationNamed:(NSString
*)fetchSpecName
entityNamed:(NSString *)entityName
loadAllModelObjects
- (void)loadAllModelObjects
See Also: - loadAllModelObjects (EOModel)
modelNamed:
- (EOModel *)modelNamed:(NSString
*)modelName
modelNames
- (NSArray *)modelNames
models
- (NSArray *)models
modelWithPath:
- (EOModel *)modelWithPath:(NSString
*)path
See Also: - path (EOModel)
removeModel:
- (void)removeModel:(EOModel
*)aModel
See Also: - EOModelGroup, - models
setDelegate:
- (void)setDelegate:(id)anObject
See Also: - delegate
storedProcedureNamed:
- (EOStoredProcedure *)storedProcedureNamed:(NSString
*)aName
Notifications
EOModelGroup declares and posts the following notifications.
EOModelAddedNotification
Posted by an EOModelGroup when an EOModel is added to the group. This notification is sent, for instance, inside Interface Builder when the user has saved changes to a model in EOModeler and the objects in Interface Builder must be brought back in sync. The old model is flushed and receivers of the notification (like data sources) can invoke modelNamed: to re-fetch their models.Notification Object | The newly added model. |
Userinfo | None |
EOModelInvalidatedNotification
Posted by an EOModelGroup when an EOModel is removed from the group. This notification is sent, for instance, inside Interface Builder when the user has saved changes to a model in EOModeler and the objects in Interface Builder must be brought back in sync. The old model is flushed and receivers of the notification (like data sources) can invoke modelNamed: to re-fetch their models.Notification Object | The invalidated model. |
Userinfo | None |