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

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

Managing Cached Objects

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

managedObjectContext

The managed object context the receiver fetches cached objects from.

@property (nonatomic, readonly) NSManagedObjectContext *managedObjectContext

Declared In

RKEntityByAttributeCache.h

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 (nonatomic, assign) BOOL monitorsContextForChanges

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:

Initializes the receiver with a given entity, attribute, and managed object context.

- (id)initWithEntity:(NSEntityDescription *)entity attribute:(NSString *)attributeName managedObjectContext:(NSManagedObjectContext *)context

Parameters

entity

The Core Data entity description for the managed objects being cached.

attributeName

The name of an attribute within the cached entity that acts as the cache key.

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