MagicalRecord 2.1
前言
CoreData是iOS開發(fā)中經(jīng)常使用的數(shù)據(jù)持久化的技術(shù)。但其操作過程稍微繁瑣,即使你只是實(shí)現(xiàn)簡單的存取,不涉及請求優(yōu)化,也要進(jìn)行許多配置工作,代碼量在動(dòng)輒幾十行,對新手來說也需要較大時(shí)間成本。
MagicalRecord是OC的一個(gè)庫,協(xié)助方便CoreData的工作。其吸收了Ruby on Rails的Active Record模式,目標(biāo)是:
- 簡化Core Data相關(guān)代碼
- 允許清晰,簡單,單行獲取
- 當(dāng)需要優(yōu)化請求的時(shí)候,仍然允許修改NSFetchRequest
安裝
1、在 github 上下載MagicalRecord
2、下載完成,將MagicalRecord 文件夾拖到Xcode中,添加進(jìn)項(xiàng)目。添加CoreData framework。
3、在PCH文件中添加 CoreData+MagicalRecord.h
4、Option: 如果你在使用MagicalRecord方法的時(shí)候不想帶MR_ 前綴,e.g. 直接用findAll 代替 MR_findAll,就在PCH中在CoreData+MagicalRecord.h之前增加 #defin MR_SHORTHAND 即可。
環(huán)境需求
MagicalRecord 需要的環(huán)境:
- iOS 5.x 及以上, Mac OS 10.7及以上
- ARC
iOS4,無ARC ,可以使用兼容版本,1.8.3
用法
創(chuàng)建Model
創(chuàng)建一個(gè)Model.xcdatamodeld ,添加一個(gè)Person Entity,添加age firstname lastname 三個(gè)屬性。最后使用Editor > Create NSManagedObject Subclass ORM生成Person類。
初始化
在AppDelegate中:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[MagicalRecord setupCoreDataStackWithStoreNamed:@"Model.sqlite"];
// ...
return YES;
}
- (void)applicationWillTerminate:(NSNotification *)aNotification
{
[MagicalRecord cleanUp];
}
這樣就搞定初始化啦?。?/p>
增
Person *person = [Person MR_createEntity];
person.firstname = @"Frank";
person.lastname = @"Zhang";
person.age = @26;
[[NSManagedObjectContext MR_defaultContext] MR_save];
查
//查找數(shù)據(jù)庫中的所有Person。
NSArray *persons = [Person MR_findAll];
//查找所有的Person并按照first name排序。
NSArray *personsSorted = [Person MR_findAllSortedBy:@"firstname" ascending:YES];
//查找所有age屬性為25的Person記錄。
NSArray *personsAgeEuqals25 = [Person MR_findByAttribute:@"age" withValue:[NSNumber numberWithInt:25]];
//查找數(shù)據(jù)庫中的第一條記錄
Person *person = [Person MR_findFirst];
改
Person *person = ...;//此處略
person.lastname = object;
[[NSManagedObjectContext MR_defaultContext] MR_save];
刪
Person *person = ...;//此處略
[person MR_deleteEntity];
[[NSManagedObjectContext MR_defaultContext] MR_save];
more