CocoaPods で MagicalRecord をインストール
Podfile に
pod "MagicalRecord"
を追加し
pod install
でインストール。
<アプリ名>-Bridging-Header.h に
#import <MagicalRecord/CoreData+MagicalRecord.h>
を記述して、Swift から MagicalRecord を使えるようにする。
なお、Bridging-Header を作る手順は先日の記事で書いた。
xcdatamodeld を作成
プロジェクト作成時に CoreData を使う選択をしていれば、 <プロジェクト名>.xcdatamodeld ファイルが作成されているので、 Xcode でエンティティを定義する。 その際、エンティティに対応する NSManagedObject サブクラスも指定。

NSManagedObject のサブクラスを作成
プロジェクトに NSManagedObject のサブクラスを追加する。 先ほど作成したエンティティに対応するクラスを Swift で生成。
import Foundation
import CoreData
@objc(Favorite)
class Favorite: NSManagedObject {
@NSManaged var login: String
@NSManaged var owner: String
@NSManaged var name: String
@NSManaged var slug: String
@NSManaged var createdAt: NSDate
@NSManaged var updatedAt: NSDate
@NSManaged var order: NSNumber
}
CoreData スタックのセットアップ
MagicalRecord を使って CoreData を初期化するコードを AppDelegate に記述する。 Xcode が生成した CoreData 関連のひな形は削除。
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// CoreData スタックを初期化
MagicalRecord.setupCoreDataStackWithStoreNamed("Bitissues.sqlite")
// ...省略...
return true
}
// ...省略...
}
これで準備完了
あとは Objective-C のときと同様に MagicalRecord が使える。 試しに、NSFetchedResultsController を取得してみるコードがこちら。
import Foundation
import CoreData
extension Favorite {
class func fetchAllWithLogin(login: String, delegate: NSFetchedResultsControllerDelegate?) -> NSFetchedResultsController {
let predicate = NSPredicate(format: "login = %@", login)
return Favorite.MR_fetchAllSortedBy(
"order",
ascending: true,
withPredicate: predicate,
groupBy: nil,
delegate: delegate
)
}
}