Swiftを使っているプロジェクトでMagicalRecordを使用する際のメモ。Swiftを使うと言っていますが、MagicalRecordで永続化するモデルは、Objective-Cとして作成しています。
Bridging-Header.hの作成
まずは、Xcodeのプロジェクトに [プロジェクト名]-Bridging-Header.h
というファイルを作成します。
1 2 3 4 5 6 7 8 | #ifndef Meemo_Meemo_Bridging_Header_h #define Meemo_Meemo_Bridging_Header_h #import "CoreData+MagicalRecord.h" // 追加! #import "KKMemo.h" // これはのちのち追加 #import "KKCategory.h" // これはのちのち追加 #endif |
とりあえず、最初は CoreData+MagicalRecord.h
をインポートします。
xcdatamodeld ファイルの作成
次にモデルを定義していきます。
ファイルの新規作成で、CoreDataを選択し、xcdatamodeldを作成します。
ENTITIESにモデルの名前を、Attributesに各モデルが持つデータ型と属性名を追加。RelationshipsのRelationshipには、小文字で持っているモデル名を、Destinationには、登録したはずのModel名が表示されているはずなので、同じものを選択する。
画像を保存するときは、そのパスを保存しておくため、データ型は、Stringにする。
モデルを選択した状態で、Editor、Create NSManagedObject SubClassを選択。この際、1つ目の画面では、管理する必要があるMemoを選び、2つ目の画面では、この管理したいMemoに関連する全てのエンティティを選ぶ。
最後にBridging-Header.hにもモデルクラスのファイルをインポートしておく。
AppDelegate.swift
AppDelegate.swift の didFinishLaunchingWithOptions に
1 2 | // Magical Record Initialization MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("Meemo.sqlite”) |
このコードを追加する。
保存・読み込み方法
保存の際には、
1 2 3 | var photoMemo = KKMemo.MR_createEntity() as KKMemo photoMemo.name = “sample” photoMemo.managedObjectContext.MR_saveToPersistentStoreAndWait() |
実際にデータを呼ぶ出すときには、
1 | memosObjects = KKMemo.MR_findAll() |
参考
http://www.raywenderlich.com/56879/magicalrecord-tutorial-ios
http://bundlr.com/clips/538e569809359743040000c0