RKEntityByAttributeCache Class Reference
Inherits from | NSObject |
Declared in | RKEntityByAttributeCache.h RKEntityByAttributeCache.m |
Overview
Instances of RKEntityByAttributeCache provide an in-memory caching mechanism for managed objects instances of an entity in a managed object context with the value of one of the object’s attributes acting as the cache key. When loaded, the cache will retrieve all instances of an entity from the store and build a dictionary mapping values for the given cache key attribute to the managed object ID for all objects matching the value. The cache can then be used to quickly retrieve objects by attribute value for the cache key without executing another fetch request against the managed object context. This can provide a large performance improvement when a large number of objects are being retrieved using a particular attribute as the key.
RKEntityByAttributeCache instances are used by the RKEntityCache to provide caching for multiple entities at once.
Tasks
Creating a Cache
-
– initWithEntity:attribute:managedObjectContext:
Initializes the receiver with a given entity, attribute, and managed object context.
Getting Cache Identity
-
entity
The Core Data entity description for the managed objects being cached.
property -
attribute
An attribute that is part of the cached entity that acts as the cache key.
property -
managedObjectContext
The managed object context the receiver fetches cached objects from.
property -
monitorsContextForChanges
A Boolean value determining if the receiever monitors the managed object context for changes and updates the cache entries using the notifications emitted.
property
Loading and Flushing the Cache
-
– load
Loads the cache by finding all instances of the configured entity and building an association between the value of the cached attribute’s value and the managed object ID for the object.
-
– flush
Flushes the cache by releasing all cache attribute value to managed object ID associations.
Inspecting Cache State
-
– isLoaded
A Boolean value indicating if the cache has loaded associations between cache attribute values and managed object ID’s.
-
– count
Returns a count of the total number of cached objects.
-
– countWithAttributeValue:
Returns the total number of cached objects with a given value for the attribute acting as the cache key.
-
– countOfAttributeValues
Returns the number of unique attribute values contained within the receiver.
-
– containsObject:
Returns a Boolean value that indicates whether a given object is present in the cache.
-
– containsObjectWithAttributeValue:
Returns a Boolean value that indicates whether one of more objects is present in the cache with a given value of the cache key attribute.
-
– objectWithAttributeValue:
Returns the first object with a matching value for the cache key attribute.
-
– objectsWithAttributeValue:
Returns the collection of objects with a matching value for the cache key attribute.
Managing Cached Objects
-
– addObject:
Adds a managed object to the cache.
-
– removeObject:
Removes a managed object from the cache.
Properties
attribute
An attribute that is part of the cached entity that acts as the cache key.
@property (nonatomic, readonly) NSString *attribute
Declared In
RKEntityByAttributeCache.h
entity
The Core Data entity description for the managed objects being cached.
@property (nonatomic, readonly) NSEntityDescription *entity
Declared In
RKEntityByAttributeCache.h
Instance Methods
addObject:
Adds a managed object to the cache.
- (void)addObject:(NSManagedObject *)object
Parameters
- object
The managed object to add to the cache.
Discussion
The object must be an instance of the cached entity.
Declared In
RKEntityByAttributeCache.h
containsObject:
Returns a Boolean value that indicates whether a given object is present in the cache.
- (BOOL)containsObject:(NSManagedObject *)object
Parameters
- object
An object.
Return Value
YES if object is present in the cache, otherwise NO.
Declared In
RKEntityByAttributeCache.h
containsObjectWithAttributeValue:
Returns a Boolean value that indicates whether one of more objects is present in the cache with a given value of the cache key attribute.
- (BOOL)containsObjectWithAttributeValue:(id)attributeValue
Parameters
- attributeValue
The value with which to check the cache for objects with
a matching value.
Return Value
YES if one or more objects with the given value for the cache key
attribute is present in the cache, otherwise NO.
Declared In
RKEntityByAttributeCache.h
count
Returns a count of the total number of cached objects.
- (NSUInteger)count
Declared In
RKEntityByAttributeCache.h
countOfAttributeValues
Returns the number of unique attribute values contained within the receiver.
- (NSUInteger)countOfAttributeValues
Return Value
The number of unique attribute values within the receiver.
Declared In
RKEntityByAttributeCache.h
countWithAttributeValue:
Returns the total number of cached objects with a given value for the attribute acting as the cache key.
- (NSUInteger)countWithAttributeValue:(id)attributeValue
Parameters
- attributeValue
The value for the cache key attribute to retrieve
a count of the objects with a matching value.
Return Value
The number of objects in the cache with the given value for the cache
attribute of the receiver.
Declared In
RKEntityByAttributeCache.h
flush
Flushes the cache by releasing all cache attribute value to managed object ID associations.
- (void)flush
Declared In
RKEntityByAttributeCache.h
initWithEntity:attribute:managedObjectContext:
- (id)initWithEntity:(NSEntityDescription *)entity attribute:(NSString *)attributeName managedObjectContext:(NSManagedObjectContext *)context
Parameters
- entity
The Core Data entity description for the managed objects being cached.
- managedObjectContext
The managed object context the cache retrieves the cached
objects from
Return Value
The receiver, initialized with the given entity, attribute, and managed object
context.
Declared In
RKEntityByAttributeCache.h
isLoaded
A Boolean value indicating if the cache has loaded associations between cache attribute values and managed object ID’s.
- (BOOL)isLoaded
Declared In
RKEntityByAttributeCache.h
load
Loads the cache by finding all instances of the configured entity and building an association between the value of the cached attribute’s value and the managed object ID for the object.
- (void)load
Declared In
RKEntityByAttributeCache.h
objectWithAttributeValue:
Returns the first object with a matching value for the cache key attribute.
- (NSManagedObject *)objectWithAttributeValue:(id)attributeValue
Parameters
- attributeValue
A value for the cache key attribute.
Return Value
An object with the value of attribute matching attributeValue or nil.
Declared In
RKEntityByAttributeCache.h
objectsWithAttributeValue:
Returns the collection of objects with a matching value for the cache key attribute.
- (NSArray *)objectsWithAttributeValue:(id)attributeValue
Parameters
- attributeValue
A value for the cache key attribute.
Return Value
An array of objects with the value of attribute matching attributeValue or
an empty array.
Declared In
RKEntityByAttributeCache.h
removeObject:
Removes a managed object from the cache.
- (void)removeObject:(NSManagedObject *)object
Parameters
- object
The managed object to remove from the cache.
Discussion
The object must be an instance of the cached entity.
Declared In
RKEntityByAttributeCache.h