Created
January 3, 2013 19:08
-
-
Save jdriscoll/4446090 to your computer and use it in GitHub Desktop.
Core Data helper categories
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 characters
// | |
// NSManagedObject+MAK.h | |
// | |
// Created by Justin Driscoll on 2/21/12. | |
// | |
#import <CoreData/CoreData.h> | |
@interface NSManagedObject (MAK) | |
+ (void)loadSeedsFromPath:(NSString *)path inContext:(NSManagedObjectContext *)context; | |
+ (NSString *)entityName; | |
+ (NSArray *)fetchAllInContext:(NSManagedObjectContext *)context; | |
+ (NSArray *)fetchObjectsInContext:(NSManagedObjectContext *)context sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate; | |
+ (NSUInteger)fetchCountInContext:(NSManagedObjectContext *)context withPredicate:(NSPredicate *)predicate; | |
+ (id)fetchFirstObjectInContext:(NSManagedObjectContext *)context sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate; | |
+ (id)newObjectInContext:(NSManagedObjectContext *)context; | |
- (void)deleteObject; | |
@end |
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 characters
// | |
// NSManagedObject+MAK.m | |
// | |
// Created by Justin Driscoll on 2/21/12. | |
// | |
#import "NSManagedObject+MAK.h" | |
#import "NSManagedObjectContext+MAK.h" | |
@implementation NSManagedObject (MAK) | |
+ (void)loadSeedsFromPath:(NSString *)path inContext:(NSManagedObjectContext *)context | |
{ | |
NSDictionary *seeds = [[NSDictionary alloc] initWithContentsOfFile:path]; | |
NSArray *Entities = [seeds allKeys]; | |
for (NSString *entityName in Entities) { | |
for (NSDictionary *propertyDictionary in (NSDictionary *)[seeds objectForKey:entityName]) { | |
NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:entityName | |
inManagedObjectContext:context]; | |
NSArray *propertyNames = [propertyDictionary allKeys]; | |
for (NSString *propertyName in propertyNames) { | |
[object setValue:[propertyDictionary objectForKey:propertyName] forKey:propertyName]; | |
} | |
} | |
} | |
} | |
+ (NSString *)entityName | |
{ | |
return NSStringFromClass([self class]); | |
} | |
+ (NSArray *)fetchAllInContext:(NSManagedObjectContext *)context | |
{ | |
return [self fetchObjectsInContext:context sortedBy:nil withPredicate:nil]; | |
} | |
+ (NSArray *)fetchObjectsInContext:(NSManagedObjectContext *)context sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate | |
{ | |
return [context fetchObjectsWithEntityName:[self entityName] sortedBy:sortDescriptors withPredicate:predicate]; | |
} | |
+ (NSUInteger)fetchCountInContext:(NSManagedObjectContext *)context withPredicate:(NSPredicate *)predicate | |
{ | |
return [context fetchCountWithEntityName:[self entityName] andPredicate:predicate]; | |
} | |
+ (id)fetchFirstObjectInContext:(NSManagedObjectContext *)context sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate | |
{ | |
return [context fetchFirstObjectWithEntityName:[self entityName] sortedBy:sortDescriptors withPredicate:predicate]; | |
} | |
+ (id)newObjectInContext:(NSManagedObjectContext *)context | |
{ | |
return [context insertNewObjectWithEntityName:[self entityName]]; | |
} | |
- (void)deleteObject | |
{ | |
[self.managedObjectContext deleteObject:self]; | |
} | |
@end |
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 characters
// | |
// NSManagedObjectContext+MAK.m | |
// | |
// Created by Justin Driscoll on 12/16/11. | |
// | |
#import <CoreData/CoreData.h> | |
@interface NSManagedObjectContext (MAK) | |
- (id)insertNewObjectWithEntityName:(NSString *)entityName; | |
- (NSArray *)fetchObjectArrayWithRequest:(NSFetchRequest *)request; | |
- (NSUInteger)fetchCountWithRequest:(NSFetchRequest *)request; | |
- (NSFetchRequest *)fetchRequestForEntity:(NSEntityDescription *)entity; | |
- (NSFetchRequest *)fetchRequestForEntityName:(NSString *)entityName; | |
- (NSFetchRequest *)fetchRequestForEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors andPredicate:(NSPredicate *)predicate; | |
- (NSArray *)fetchObjectsWithEntityName:(NSString *)entityName sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate; | |
- (id)fetchFirstObjectWithEntityName:(NSString *)entityName sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate; | |
- (NSUInteger)fetchCountWithEntityName:(NSString *)entityName andPredicate:(NSPredicate *)predicate; | |
@end |
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 characters
// | |
// NSManagedObjectContext+MAK.m | |
// | |
// Created by Justin Driscoll on 12/16/11. | |
// | |
#import "NSManagedObjectContext+MAK.h" | |
@implementation NSManagedObjectContext (MAK) | |
- (id)insertNewObjectWithEntityName:(NSString *)entityName | |
{ | |
return [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self]; | |
} | |
#pragma mark - | |
- (NSArray *)fetchObjectArrayWithRequest:(NSFetchRequest *)request | |
{ | |
NSError *error; | |
NSArray *results = [self executeFetchRequest:request error:&error]; | |
NSAssert(error == nil, [error description]); | |
return results; | |
} | |
- (NSUInteger)fetchCountWithRequest:(NSFetchRequest *)request | |
{ | |
NSError *error = nil; | |
NSUInteger result = [self countForFetchRequest:request error:&error]; | |
NSAssert(error == nil, [error description]); | |
return result; | |
} | |
#pragma mark - | |
- (NSFetchRequest *)fetchRequestForEntity:(NSEntityDescription *)entity | |
{ | |
NSFetchRequest *request = [[NSFetchRequest alloc] init]; | |
[request setEntity:entity]; | |
return request; | |
} | |
- (NSFetchRequest *)fetchRequestForEntityName:(NSString *)entityName | |
{ | |
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:self]; | |
return [self fetchRequestForEntity:entity]; | |
} | |
- (NSFetchRequest *)fetchRequestForEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors andPredicate:(NSPredicate *)predicate | |
{ | |
NSFetchRequest *request = [self fetchRequestForEntityName:entityName]; | |
if (sortDescriptors) | |
[request setSortDescriptors:sortDescriptors]; | |
if (predicate) | |
[request setPredicate:predicate]; | |
return request; | |
} | |
#pragma mark - | |
- (NSArray *)fetchObjectsWithEntityName:(NSString *)entityName sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate | |
{ | |
NSFetchRequest *request = [self fetchRequestForEntityName:entityName sortDescriptors:sortDescriptors andPredicate:predicate]; | |
return [self fetchObjectArrayWithRequest:request]; | |
} | |
- (id)fetchFirstObjectWithEntityName:(NSString *)entityName sortedBy:(NSArray *)sortDescriptors withPredicate:(NSPredicate *)predicate | |
{ | |
NSFetchRequest *request = [self fetchRequestForEntityName:entityName sortDescriptors:sortDescriptors andPredicate:predicate]; | |
[request setFetchLimit:1]; | |
NSArray *results = [self fetchObjectArrayWithRequest:request]; | |
if ([results count] == 0) | |
return nil; | |
return [results lastObject]; | |
} | |
#pragma mark - | |
- (NSArray *)fetchObjectsWithEntityName:(NSString *)entityName usingPredicate:(NSPredicate *)predicate sortedBy:(NSString *)sortDescriptorKey ascending:(BOOL)ascending | |
{ | |
NSArray *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:sortDescriptorKey ascending:ascending]; | |
return [self fetchObjectsWithEntityName:entityName sortedBy:@[sortDescriptor] withPredicate:predicate]; | |
} | |
- (id)fetchFirstObjectWithEntityName:(NSString *)entityName usingPredicate:(NSPredicate *)predicate sortedBy:(NSString *)sortDescriptorKey ascending:(BOOL)ascending | |
{ | |
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:sortDescriptorKey ascending:ascending]; | |
return [self fetchFirstObjectWithEntityName:entityName sortedBy:@[sortDescriptor] withPredicate:predicate]; | |
} | |
#pragma mark - | |
- (NSUInteger)fetchCountWithEntityName:(NSString *)entityName andPredicate:(NSPredicate *)predicate | |
{ | |
NSFetchRequest *request = [self fetchRequestForEntityName:entityName sortDescriptors:nil andPredicate:predicate]; | |
return [self fetchCountWithRequest:request]; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment