// // RKFetchRequestMappingCache.m // RestKit // // Created by Jeff Arena on 1/24/12. // Copyright (c) 2009-2012 RestKit. All rights reserved. // #import "RKFetchRequestManagedObjectCache.h" #import "NSManagedObject+ActiveRecord.h" #import "NSEntityDescription+RKAdditions.h" #import "RKLog.h" // Set Logging Component #undef RKLogComponent #define RKLogComponent lcl_cRestKitCoreData @implementation RKFetchRequestManagedObjectCache - (NSManagedObject *)findInstanceOfEntity:(NSEntityDescription *)entity withPrimaryKeyAttribute:(NSString *)primaryKeyAttribute value:(id)primaryKeyValue inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext { NSAssert(entity, @"Cannot find existing managed object without a target class"); NSAssert(primaryKeyAttribute, @"Cannot find existing managed object instance without mapping that defines a primaryKeyAttribute"); NSAssert(primaryKeyValue, @"Cannot find existing managed object by primary key without a value"); NSAssert(managedObjectContext, @"Cannot find existing managed object with a context"); NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init]; [fetchRequest setEntity:entity]; [fetchRequest setFetchLimit:1]; [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%K = %@", primaryKeyAttribute, primaryKeyValue]]; NSArray *objects = [NSManagedObject executeFetchRequest:fetchRequest]; RKLogDebug(@"Found objects '%@' using fetchRequest '%@'", objects, fetchRequest); [fetchRequest release]; NSManagedObject *object = nil; if ([objects count] > 0) { object = [objects objectAtIndex:0]; } return object; } @end