&tag(MagicalRecord); *目次 [#r577c90f] #contents *参考情報 [#o0f841eb] -[[CoreDataをActiveRecord風に扱えるMagicalRecordの使い方 | Technology-Gym:http://tech-gym.com/2012/01/objective-c/612.html]] *プロジェクトの作成 [#x0c07e70] **mogeneratorのインストール [#r7b8e657] -別に必須でもないけど便利なので入れておく。[[mogenerator]]を参考に。 **プロジェクトの作成 [#m5057087] -Empty Applicationを選択。Use CoreDataにチェックを入れてプロジェクトを作成。名前はMagicalRecordDemoとでも。ARCは使用する。一端終了。 -プロジェクトのルートにPodfileを作る。 #pre{{ platform :ios pod 'MagicalRecord' }} -pod実行 pod install **モデルの作成 [#d0c0593a] -MagicalRecordDemo.xcodeprojを開く。MagicalRecordDemo.xcdtamodeldを編集し、Personという名前のエンティティを追加。 -PersonのAttributesとして、name(typeはString)を追加。対応するクラスをPersonとしておく。 -mogeneratorを実行。 mogenerator -m MagicalRecordDemo/MagicalRecordDemo.xcdatamodeld/MagicalRecordDemo.xcdatamodel/ -O MagicalRecordDemo/Models --template-var arc=true -Add Filesで、Modelsフォルダ以下を一気にとりこむ。 **使ってみる [#x14da3bc] -MagicalRecordDemo-Prefix.pchを編集して以下を追加。#define MR_SHORTHANDするとメソッドが簡単な名前で呼び出せるようになるっぽい。 #pre{{ #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> // #define MR_SHORTHAND #import "CoreData+MagicalRecord.h" #endif }} -とりあえず保存して、表示するサンプル。実行するごとにPersonが増えていく。 #pre{{ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [MagicalRecord setupCoreDataStack]; NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext]; //Personを一つ保存 Person *person = [Person MR_createEntity]; person.name = @"tanaka"; [context MR_saveToPersistentStoreAndWait]; //保存されているPersonを全部表示 NSArray *result = [Person MR_findAll]; int i = 0; for (Person *p in result) { NSLog(@"%d name=%@",i, person.name); i++; } self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } }} *Tips [#s795f405] **Entityを削除する [#i97602c4] -例えばLogエンティティを全削除する場合 #pre{{ [Log MR_truncateAll]; [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; }}