Files
RestKit/Code/CoreData/NSManagedObjectContext+RKAdditions.h
2012-09-29 17:54:51 -04:00

102 lines
4.5 KiB
Objective-C

//
// NSManagedObjectContext+RKAdditions.h
// RestKit
//
// Created by Blake Watters on 3/14/12.
// Copyright (c) 2009-2012 RestKit. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#import <CoreData/CoreData.h>
@class RKManagedObjectStore;
/**
Provides extensions to `NSManagedObjectContext` for various common tasks.
*/
@interface NSManagedObjectContext (RKAdditions)
///---------------------------------
/// @name Inserting a Managed Object
///---------------------------------
/**
Inserts a new managed object for the entity for the given name.
This method is functionally equivalent to the follow code example.
[NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self];
@param entityName The name of an entity.
@return A new, autoreleased, fully configured instance of the class for the entity named entityName. The instance has its entity description set and is inserted into the receiver.
*/
- (id)insertNewObjectForEntityForName:(NSString *)entityName;
///-------------------------------
/// @name Counting Managed Objects
///-------------------------------
/**
Convenience method for performing a count of the number of instances of an entity with the given name.
This method is functionally equivalent to the following code example.
NSError *error;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:entityName];
fetchRequest.predicate = predicate;
NSUInteger count = [managedObjectContext countForFetchRequest:fetchRequest error:&error];
@param entityName The name of an entity.
@param predicate A predicate to limit the search. May be nil.
@param error If there is a problem executing the fetch, upon return contains an instance of NSError that describes the problem.
@return The number of objects a fetch request for the given entity name with the given predicate would have returned if it had been passed to executeFetchRequest:error:, or NSNotFound if an error occurs.
*/
- (NSUInteger)countForEntityForName:(NSString *)entityName predicate:(NSPredicate *)predicate error:(NSError **)error;
///----------------------------------------------
/// @name Fetching Managed Objects by Primary Key
///----------------------------------------------
/**
Fetches a single managed object for the given entity with the given value for the primary key attribute in the receiver.
@param entity The entity of the managed object to be retrieved by primary key.
@param primaryKeyValue The value for the entity's primary key attribute.
@return The managed object with the primary key attribute equal to the given value or nil if none was found.
*/
- (id)fetchObjectForEntity:(NSEntityDescription *)entity withValueForPrimaryKeyAttribute:(id)primaryKeyValue;
/**
Fetches a single managed object for the entity for the given name with the given value for the primary key attribute in the receiver.
@param entityName The name of the entity of the managed object to be retrieved by primary key.
@param primaryKeyValue The value for the receiving entity's primary key attribute.
@return The managed object with the primary key attribute equal to the given value or nil if none was found.
*/
- (id)fetchObjectForEntityForName:(NSString *)entityName withValueForPrimaryKeyAttribute:(id)primaryKeyValue;
///-------------------------------------------------
/// @name Saving the Context to the Persistent Store
///-------------------------------------------------
/**
Saves the receiver and then traverses up the parent context chain until a parent managed object context with a nil parent is found. If the final ancestor context does not have a reference to the persistent store coordinator, then a warning is generated and the method returns NO.
@param error If there is a problem saving the receiver or any of its ancestor contexts, upon return contains an pointer to an instance of NSError that describes the problem.
@return YES if the save to the persistent store was successful, else NO.
*/
- (BOOL)saveToPersistentStore:(NSError **)error;
@end