&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];
}}


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS