Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

  • View
    1.846

  • Download
    5

  • Category

    Software

Preview:

DESCRIPTION

Cocoa勉強会関西 #55 MagicalRecordでCore Dataをシンプルにする

Citation preview

MagicalRecordでCore Dataをシンプルにする

Cocoa 勉強会 関西

2014/4/19 @asakahara

まずは自己紹介

•今年2月からはてなスタッフとして滋賀に移住したばかり •それ以前は広島のECサイト運営会社とフリーランスで

3年ほどiOSアプリ開発に従事

•個人でもiOSアプリを5本ほどリリース

•最近は仕事以外でも夜な夜なアプリ作るのが日課

少し宣伝を・・・是非お試しください!

Core Data って使いやすいですか?

では本題です

•使うための前準備だけでいろいろ書く必要がある

•マルチスレッドの場合、スレッド毎にContextを用意しな

いといけない等の準備が必要 •単純なクエリでもコード量増えがち

•NSUserDefaultsみたいに簡単に使いにくい

機能は充実しているけど・・・

など問題ありますよね・・・

もっと気軽に使いたい!

と思ってたら それらを解決してくれる ライブラリが既に

たくさん作られていました

その中から今日は 以前から開発されていて

情報も多いMagicalRecordについて 簡単に紹介します

MagicalRecordとは?• Active Recordパターンを採用したCore Data のラッパー

• Core Dataの機能もそのまま使える

• Core Data特有の処理を隠蔽してくれる

• Core Dataの知識があれば学習コストは低い

面倒なことを肩代わりしてくれます!

mogeneratorについても紹介Xcodeで作成したモデルファイルから各エンティティ用の NSManagedObject派生クラスを自動生成してくれるユーティリティ

Xcodeでもできるけど・・・ •カスタマイズ専用のサブクラスも一緒に出力してくれる

•固有の処理はサブクラスに書いておけば再出力しても上書きされない等のメリットがある

補足: MagicalRecordとmogeneratorを一緒に使うとリジェクトされるケースがあるらしい

Ver 2.3.0(ベータ)では解決しているとのこと

MagicalRecordの導入

platform :ios, '7.0'pod 'MagicalRecord'

・Podfileの作成

・インストール> pod install

> brew install mogenerator

・mogenerator はHomebrewでインストールするのが簡単

monegeratorの使い方

> mogenerator --template-var arc=true \ -m ./project/Model/DataModel.xcdatamodeld \ -O ./project/Model/

・コマンド

使い方

[MagicalRecord setupCoreDataStackWithStoreNamed:@“データモデル名.sqlite”];

application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

•後処理(applicationWillTerminate:)

[MagicalRecord cleanUp];

•セットアップ

CRUDNSArray *people = [Person MR_findAll];!NSArray *peopleSorted = [Person MR_findAllSortedByProperty: @"LastName" ascending:YES];!

•クエリ

•登録Person *myNewPersonInstance = [Person MR_createEntity];

Person *p = ...;[p MR_deleteEntity];

•削除

[[NSManagedObjectContext MR_defaultContext] MR_saveOnlySelfAndWait];

•保存

詳細な使い方はドキュメントを見ていきましょう !

https://github.com/magicalpanda/MagicalRecord

MagicalRecordを使ったサンプルを 公開してますので参考にしてください

https://github.com/asakahara/ASHatenaBlogReader

今日のまとめ

• MagicalRecordを使うことで開発効率のアップ

•簡単に使える分、Core Dataが裏で何をやってるかを

常に意識しながら開発するのがベスト •気になるところは実際にソースコードを見てみるとよい

面倒で決まりきった処理は ライブラリにまかせて

自分たちが本当に作るべき物を集中して開発できる環境にして

いきましょう!

• iOS Core Data 徹底入門 !日本語のCore Dataに関する書籍は少ないので貴重な一冊です !マルチスレッドで使用する際の情報があればもっとよかった

Core Dataをよりよく 知るために

活動中のSNS、ブログなど

•はてなブログ:http://sakahara.hatenablog.jp/

•個人サイト:http://www.mocology.com/ja/

• Twitter:@asakahara

• qiita:http://qiita.com/asakahara

ご清聴ありがとう ございました!