酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

MagicalRecord を Swiftで使う

MagicalRecordをSwiftで使う手順です。 iOSのアプリを作るときには、いつもお世話になるライブラリなので、ちゃんと使い方をメモしておくために書きます。 この記事では、SwiftでMagicalRecordを使うための初期設定


プロジェクト作成時に注意すること

プロジェクトを新規作成するときに『Core Dataを使う』をチェックしてください。

スクリーンショット_2015-03-16_10_15_05

Cocoapodsによるライブラリのインストール

基本的にはブリッジするためのヘッダファイルさえ書けば大丈夫でした。

1
2
3
4
5
# プロジェクトフォルダの直下に移動
cd /path/to/project

# Podfileの初期化 (Podfileが存在しない場合のみ)
pod init

Podfileが作成されるので、そこに次のように設定を追記します。

1
2
3
4
5
6
7
8
platform :ios, '8.0'

target 'APP_NAME' do
  pod 'MagicalRecord'
end

target 'APP_NAME_TEST' do
end

あとは、Podfileに書かれたファイルをインストールします。

1
2
# Podfileをインストール
pod install

モデルデータを作成

APP_NAME.xcdatamodeldでモデルを作成します。 今回はSampleというモデルを作成することにします。

スクリーンショット_2015-03-16_10_19_28

次に、このSampleエンティティにクラス名「Sample」を設定します。

スクリーンショット 2015-03-16 10.22.25

mogenerator を使ってモデルファイルを作成

Homebrewを使って、『mogenerator』をインストール。

1
brew install mogenerator

次にmogeneratorを使ってモデルファイルを作成。

1
2
3
4
5
# プロジェクトフォルダの直下に移動
cd /path/to/project

# Modelフォルダの配下にモデルファイルを作成
mogenerator -m APP_NAME/APP_NAME.xcdatamodeld/APP_NAME.xcdatamodel -O Model/ --template-var arc=true

すると以下のファイルが作成されると思います。

_Sample.h
_Sample.m
Sample.h
Sample.m

アンダーバーのついたファイルはシステムが使うベースファイルで、ユーザーはアンダーバーのついていないファイルに 自由にメソッドや変数を書き加えることができます。

ブリッジのためのヘッダファイルの作成/追記

File => New => File...からHeader Fileを選択、 APP_NAME-Bridging-Header.hファイルを追加して、 以下を追加します。

1
2
#import "CoreData+MagicalRecord.h"
#import "Sample.h"

プロジェクトを選択 => TARGETS => Build Settings => Objective-C Bridging Header$(SRCROOT)/$(PROJECT)/SwiftProject-Bridging-Header.hを追加

スクリーンショット_2015-03-15_20_00_20

MagicalRecordの初期化

AppDelegate.swiftに初期化用の設定を追記します。

1
2
3
4
5
6
7
8
9
10
11
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

  // initialize coredata (↓初期化用の設定を追記)
  MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("APP_NAME.sqlite")
}

- (void)applicationWillTerminate:(UIApplication *)application
{
  // clean up coredata (↓データ永続化の設定を追記)
  MagicalRecord.cleanUp()
}

データ作成、編集、削除等の操作について

こちらのエントリーがすごくわかりやすいのでよければこちらをご参照ください。

Objective-C - Mogenerator + MagicalRecordでCoreData入門 - Qiita

また、公式のWikiもすごくわかりやすいので良ければ参考にしてください!

Home · magicalpanda/MagicalRecord Wiki


Special Thanks

Bundlr - SwiftとMagicalRecordを使って簡単なTodoアプリを作るチュートリアル - Qiita

おすすめの書籍