Skip to content

Instantly share code, notes, and snippets.

@mpurbo
Created March 5, 2013 01:31
Show Gist options
  • Save mpurbo/5087295 to your computer and use it in GitHub Desktop.
Save mpurbo/5087295 to your computer and use it in GitHub Desktop.

Revisions

  1. mpurbo created this gist Mar 5, 2013.
    172 changes: 172 additions & 0 deletions gistfile1.m
    Original 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];
    }