- 更新日: 2015年5月7日
- Swift & iOS
MagicalRecordをSwiftで使う導入〜設定までの手順
iOS 開発における Core Data のラッパーライブラリである MagicalRecord を、Swift で使うための手順です。導入から設定までを一通り。MagicalRecord は Objective-C 製のライブラリであるため、Swift から使うには Bridging Header の設定等を行う必要があります。
— 環境 —
Swift version 1.2
Xcode Version 6.3.1
MagicalRecord 2.2
Xcode 新規プロジェクトの作成
Create a new Xcode project から Xcode のプロジェクトを新規作成。
Use Core Data にチェックしておきます。今回は、TodoApp というプロジェクト名にしました。
CocoaPods で MagicalRecord をインストール
CocoaPods で MagicalRecord を入れる。
CocoaPodsの使い方、iOSライブラリの管理ツール | EasyRamble
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ cd /path/to/XcodeProject/TodoApp $ pod init $ vi Podfile platform :ios, '8.3' target 'SwiftToDo' do pod 'MagicalRecord' end target 'SwiftToDoTests' do end $ pod install $ open TodoApp.xcworkspace |
Xcode を起動すると ? マークが付いているファイル・フォルダがある。これは Git で add されていないものなので、Git の管理下にします。Pods フォルダは Git 管理から除外。
1 2 3 4 5 |
$ echo "Pods" >> .gitignore $ git add . $ git commit -m "pod install MagicalRecord" |
Xcode 再起動。
1 2 3 |
$ open TodoApp.xcworkspace |
はてなマークが消えるはずです。
Swift から MagicalRecord を使うための Bridging Header 設定
TodoApp を右クリック → New File からファイルを新規作成します。
iOS → Source → Header File を選択。
TodoApp-Bridging-Header.h とファイル名を入力して作成。
作成した TodoApp-Bridging-Header.h を以下の通り編集します。
TodoApp-Bridging-Header.h
1 2 3 4 5 6 |
#ifndef TodoApp_TodoApp_Bridging_Header_h #define TodoApp_TodoApp_Bridging_Header_h #import "CoreData+MagicalRecord.h" #endif |
続いて Bridging Header の設定です。
TodoApp プロジェクトを選択 → Targets で TodoApp を選択 → Build Settings → All → Swift Compiler – Code Generation → Objective-C Bridging Header に先ほど作成した TodoApp-Bridging-Header.h のフルパスを指定します。
Objective-C Bridging Header の右横 TodoApp の下をダブルクリックすると、入力用フィールドが表示されます。
TodoApp-Bridging-Header.h へのフルパスを入力します。
AppDelegate.swift で MagicalRecord 初期化の設定
AppDelegate.swift を以下のように編集します。編集するメソッドは2つ。
AppDelegate.swift
1 2 3 4 5 6 7 8 9 10 |
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // for magical record - initialize coredata MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("TodoApp.sqlite") return true } func applicationWillTerminate(application: UIApplication) { // for magical record - clean up coredata MagicalRecord.cleanUp() } |
モデルのエンティティを作成
モデルのエンティティを作成。TodoApp.xcdatamodeld を選択し、下部の Add Entitiy をクリックして追加。モデル名を Todo にしました。また Attributes の下の + をクリックして属性を追加、名前は item で、型は String を指定。
NSManagedObject Subclass 用のファイルを作成
TodoApp.xcdatamodeld を選択した状態で、Editor → Create NSManagedObject Subclass をクリック。以下画像の手順に従って進めます。
チェックが入っていることを確認。
チェックが入っていることを確認。
TodoApp の Group に作成。
モデル用ファイルである Todo.swift が作成されるので、確認して @objc(Todo) を追加する。
Todo.swift
1 2 3 4 5 6 7 8 9 |
import Foundation import CoreData @objc(Todo) class Todo: NSManagedObject { @NSManaged var item: String } |
以上で、MagicalRecord から Todo という名前のモデルを操作できるようになります。MagicalRecord を使っての具体的な CRUD 操作(Create, Read, Update, Delete)についてはまたの機会。
- Swift & iOS の関連記事
- WKWebView/UIWebViewでウェブページが真っ白
- Unityのインストールと初期設定
- WKWebView/UIWebViewでNavigation Barの下にウェブページが隠れるのを回避
- SwiftでArray(配列)などをシャッフル
- Navigation Controllerで画面遷移させるSwiftコード
- Swiftでタップ/スワイプのイベント処理実装・UITapGestureRecognizerとUISwipeGestureRecognizer
- UIPageViewController画面下部のUIPageControlを非表示にする
- Swiftのバージョン確認・REPL実行
- Xcode7.0アップデートで遭遇した課題2つ
- 正規のXcodeかどうかチェック(XcodeGhostマルウェア騒動)
Leave Your Message!