48
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MagicalRecordでCoreDataをMagical簡単に!

Last updated at Posted at 2012-12-26

「CoreData?何だか難しそう。。。」
「CoreData?簡単なアクセスも冗長だよねぇ」
「というかCoreData面倒じゃね?」

はい、私もそう思ってました。
じゃあ外部Libraryに頼ろう!と思い色々調べた結果、「MagicalRecord」が簡単そうだと。

導入〜保存までの一連の流れを備忘録を兼ねて書いておきます。

1.gitからdownload
ここからローカルに保存

2.プロジェクトの取り込み

1で保存したMagicalRecordからMagicalRecordディレクトリをProjectにコピー

3.プロジェクト構成変更

・〜Prefix.pchに以下の内容を追加

〜Prefix.pch
    // #define MR_SHORTHANDがないと以下のcreateEntityが使えない
    #define MR_SHORTHAND
    #import "CoreData+MagicalRecord.h"

4.CoredataのModelを生成

ここはGoogle先生に聞けばいいので省略

5.CoreDataの初期化〜保存

AppDelegate.m
     // 初期化処理を追加
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // 文字列指定だとProjectFileのカレントに作成されます.
        [MagicalRecord setupCoreDataStackWithStoreNamed:@"sample.sqlite"];

        // NSURLを渡すと指定された場所に作成されます。
        // 以下の例ではLibrary/Cache以下に作成されます。
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,    NSUserDomainMask, YES);
        NSString* path = [paths objectAtIndex:0];
        path = [path stringByAppendingPathComponent:@"sample.sqlite"];
        NSURL* url = [NSURL fileURLWithPath:path];

        [MagicalRecord setupCoreDataStackWithStoreNamed:url];
    }

    // CleanUp処理を追加
    -(void)applicationWillTerminate:(UIApplication *)application {
          [MagicalRecord cleanUp];
    }

6.データを生成 and 保存

ViewController.m
     // ViewControllerの適当なボタン押下Event
     // PersonModelが定義されている前提
     // Personはname及びageの属性を保持
     -(IBAction) addEntity:(id)sender {
        NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
         Person* person = [Person createEntity];
         // 値を設定.
         person.name = @"hoge";
         person.age = 15;
         // 値を保存
         [context MR_saveNestedContexts];
     }

以上の流れで保存までできます。
CoreDataをガチで書くより簡単なのでおすすめかもしれません。
(もしかして何か間違ってるかもしれないので、その時はご指摘ください。。。)

48
49
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?