Created
March 5, 2013 01:31
-
-
Save mpurbo/5087295 to your computer and use it in GitHub Desktop.
Revisions
-
mpurbo created this gist
Mar 5, 2013 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,172 @@ - (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]; }