- (NSArray *)fetchRecordsForEntity:(NSString *)entityName { return [self fetchRecordsForEntity:entityName orderBy:nil]; } - (NSArray *)fetchRecordsForEntity:(NSString *)entityName orderBy:(NSString *)column { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; if (column != nil) { [request setSortDescriptors:[NSArray arrayWithObjects: [NSSortDescriptor sortDescriptorWithKey:column ascending:YES], nil]]; } NSArray *results = [managedObjectContext executeFetchRequest:request error:&error]; [request release]; if (error != nil) { NSLog(@"Error fetching data: %@", [error localizedDescription]); } return results; } - (NSArray *)fetchRecordsForEntity:(NSString *)entityName havingValue:(id)value forColumn:(NSString *)column { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; NSString *predicateFormat = [NSString stringWithFormat:@"%@ == %%@", column]; [request setPredicate:[NSPredicate predicateWithFormat:predicateFormat, value]]; NSArray *results = [managedObjectContext executeFetchRequest:request error:&error]; [request release]; if (error != nil) { NSLog(@"Error fetching data: %@", [error localizedDescription]); } return results; } - (NSArray *)fetchRecordsForEntity:(NSString *)entityName havingValuesForKeys:(NSDictionary *)valuesForKeys { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; NSMutableArray *subpredicates = [NSMutableArray array]; [valuesForKeys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSString *predicateFormat = [NSString stringWithFormat:@"%@ == %%@", key]; NSPredicate *subpredicate = [NSPredicate predicateWithFormat:predicateFormat, obj]; [subpredicates addObject:subpredicate]; }]; [request setPredicate:[NSCompoundPredicate andPredicateWithSubpredicates:subpredicates]]; NSArray *results = [managedObjectContext executeFetchRequest:request error:&error]; [request release]; if (error != nil) { NSLog(@"Error fetching data: %@", [error localizedDescription]); } return results; } - (NSManagedObject *)fetchRecordForEntity:(NSString *)entityName havingValue:(id)value forColumn:(NSString *)column { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; NSString *predicateFormat = [NSString stringWithFormat:@"%@ == %%@", column]; [request setPredicate:[NSPredicate predicateWithFormat:predicateFormat, value]]; NSArray *results = [managedObjectContext executeFetchRequest:request error:&error]; [request release]; if (error != nil) { NSLog(@"Error fetching data: %@", [error localizedDescription]); } if ([results count] > 0) { return [results objectAtIndex:0]; } else { return nil; } } - (NSManagedObject *)fetchRecordForEntity:(NSString *)entityName havingValuesForKeys:(NSDictionary *)valuesForKeys { NSError *error = nil; NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; NSMutableArray *subpredicates = [NSMutableArray array]; [valuesForKeys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSString *predicateFormat = [NSString stringWithFormat:@"%@ == %%@", key]; NSPredicate *subpredicate = [NSPredicate predicateWithFormat:predicateFormat, obj]; [subpredicates addObject:subpredicate]; }]; [request setPredicate:[NSCompoundPredicate andPredicateWithSubpredicates:subpredicates]]; NSArray *results = [managedObjectContext executeFetchRequest:request error:&error]; [request release]; if (error != nil) { NSLog(@"Error fetching data: %@", [error localizedDescription]); } if ([results count] > 0) { return [results objectAtIndex:0]; } else { return nil; } } - (NSUInteger)countRecordsForEntity:(NSString *)entityName { NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; [request setIncludesSubentities:NO]; //Omit subentities. Default is YES (i.e. include subentities) NSError *err; NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err]; if (count == NSNotFound) { count = 0; } [request release]; return count; } - (NSUInteger)countRecordsForEntity:(NSString *)entityName havingValue:(id)value forColumn:(NSString *)column { NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext]]; [request setIncludesSubentities:NO]; //Omit subentities. Default is YES (i.e. include subentities) NSString *predicateFormat = [NSString stringWithFormat:@"%@ == %%@", column]; [request setPredicate:[NSPredicate predicateWithFormat:predicateFormat, value]]; NSError *err; NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err]; if (count == NSNotFound) { count = 0; } [request release]; return count; } - (void)deleteRecord:(NSManagedObject *)record { NSManagedObjectContext *managedObjectContext = [self managedObjectContext]; [managedObjectContext deleteObject:record]; }