Magical Record DAO
This is magical record 2nd posts.
The first post is Magical Record First Step.
Simple Example
.xcdatamodeld
Country
- code Integer32
- key String
Create
-(Country *)createCountry:(int)code key:(NSString *)key { Country *country = [Country MR_createEntity]; country.code = [NSNumber numberWithInt:code]; country.key = key; return country; }
Usage
CountryDAO *cdao = [[CountryDAO alloc] init]; [cdao createCountry:1 key:@"goodtimebiz.us"]; [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
This example uses general context and MR_createEntity.
Very easy?
MR_saveToPersistentStoreAndWait is to commit.
Read
Find all
-(NSArray *)findAll { return [Country MR_findAll]; }
Find by attr
-(Country *)findByCode:(int)code { return [Country MR_findFirstByAttribute:@"code" withValue:[NSNumber numberWithInt:code]]; }
This is attribute search.
Truncate
To delete one item or several items, we use MR_deleteAllMatchingPredicate
To delete all(a lot of items), use trancate like MySQL.
-(void)deleteAll { [Country MR_truncateAll]; }
NSPredicate
To make a bit difficult SQL, we use NSPredicate in CoreData.
It is same as Magical Record.
.xcdatamodeld
Item
- from Date
- name String
- to Date
- uid String
Delete
-(void)deleteByUid:(NSString *)uid { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uid == %@", uid]; [Item MR_deleteAllMatchingPredicate:predicate]; }
To add condition, we use NSPredicate.
Predicate(condition)
-(NSArray *)findBetweenFromTo:(NSDate *)from to:(NSDate *)to {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@”(from >= %@) AND (to <= %@)", from, to];
return [Item MR_findAllSortedBy:@"from" ascending:YES withPredicate:predicate];
}
[/cpp]