CoreDataのLightweight Migrationが行われるかどうかを検出する
上記記事のMagicalRecord対応版
willmMigrate
func willMigrate() -> Bool{
let sqliteURL =
self.applicationDocumentsDirectory.URLByAppendingPathComponent("MigrateDetect.sqlite")
let managedObjectModel = NSManagedObjectModel.MR_defaultManagedObjectModel()!
do {
// 初回実行時はメタデータの取得が出来ず、下記メソッドがエラーとなるため例外処理を行う
let metadata = try NSPersistentStoreCoordinator.metadataForPersistentStoreOfType(NSSQLiteStoreType,
URL: sqliteURL,
options:nil)
return !managedObjectModel.isConfiguration(nil,compatibleWithStoreMetadata:metadata)
} catch {
return false
}
}
MagicalRecordのManagedObjectModelはMR_defaultManagedObjectModel()を使って取得する。
ManagedObjectModelの取得処理関連に手を入れている場合はそれを考慮したコードにしないといけない。