Created
March 5, 2013 01:31
-
-
Save mpurbo/5087295 to your computer and use it in GitHub Desktop.
Generic methods for fetching rows from table using Core Data.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (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]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment