From 5f04f4c49686ead643895e2828efa0cd1b2d7e55 Mon Sep 17 00:00:00 2001 From: John Estropia Date: Tue, 7 Jul 2015 19:38:46 +0900 Subject: [PATCH] reversible migrations --- CoreStore/Migrating/DataStack+Migration.swift | 48 ++++++----- CoreStore/Setting Up/DataStack.swift | 16 +++- .../CoreStoreDemo.xcodeproj/project.pbxproj | 4 + .../MigrationsDemoViewController.swift | 2 +- .../xcmapping.xml | 83 +++++++++++++++++++ 5 files changed, 130 insertions(+), 23 deletions(-) create mode 100644 CoreStoreDemo/CoreStoreDemo/MIgrations Demo/OrganismV3ToV2.xcmappingmodel/xcmapping.xml diff --git a/CoreStore/Migrating/DataStack+Migration.swift b/CoreStore/Migrating/DataStack+Migration.swift index 732ea74..ba44375 100644 --- a/CoreStore/Migrating/DataStack+Migration.swift +++ b/CoreStore/Migrating/DataStack+Migration.swift @@ -446,6 +446,18 @@ public extension DataStack { private func startMigrationForSQLiteStore(fileURL fileURL: NSURL, sourceModel: NSManagedObjectModel, destinationModel: NSManagedObjectModel, mappingModel: NSMappingModel) throws { + autoreleasepool { + + let journalUpdatingCoordinator = NSPersistentStoreCoordinator(managedObjectModel: sourceModel) + let store = try! journalUpdatingCoordinator.addPersistentStoreWithType( + NSSQLiteStoreType, + configuration: nil, + URL: fileURL, + options: [NSSQLitePragmasOption: ["journal_mode": "DELETE"]] + ) + try! journalUpdatingCoordinator.removePersistentStore(store) + } + let migrationManager = NSMigrationManager( sourceModel: sourceModel, destinationModel: destinationModel @@ -475,21 +487,18 @@ public extension DataStack { withIntermediateDirectories: true, attributes: nil ) + + let temporaryFileURL = temporaryDirectoryURL.URLByAppendingPathComponent(fileURL.lastPathComponent!, isDirectory: false) do { try migrationManager.migrateStoreFromURL( fileURL, type: NSSQLiteStoreType, - options: [ - NSSQLitePragmasOption: ["WAL": "journal_mode"] - ], + options: nil, withMappingModel: mappingModel, - toDestinationURL: temporaryDirectoryURL.URLByAppendingPathComponent(fileURL.lastPathComponent!, isDirectory: false), + toDestinationURL: temporaryFileURL, destinationType: NSSQLiteStoreType, - destinationOptions: [ - NSSQLitePragmasOption: ["WAL": "journal_mode"], - NSSQLiteManualVacuumOption: true - ] + destinationOptions: nil ) } catch { @@ -515,20 +524,19 @@ public extension DataStack { do { - let originalDirectoryURL = fileURL.URLByDeletingLastPathComponent! - for temporaryFileURL in try fileManager.contentsOfDirectoryAtURL(temporaryDirectoryURL, includingPropertiesForKeys: nil, options: .SkipsSubdirectoryDescendants) { + try fileManager.replaceItemAtURL( + fileURL, + withItemAtURL: temporaryFileURL, + backupItemName: nil, + options: [], + resultingItemURL: nil + ) + + do { - try fileManager.replaceItemAtURL( - originalDirectoryURL.URLByAppendingPathComponent( - temporaryFileURL.lastPathComponent!, - isDirectory: false - ), - withItemAtURL: temporaryFileURL, - backupItemName: nil, - options: [], - resultingItemURL: nil - ) + try fileManager.removeItemAtPath(fileURL.path! + "-shm") } + catch _ { } } catch { diff --git a/CoreStore/Setting Up/DataStack.swift b/CoreStore/Setting Up/DataStack.swift index 50f7093..13b8092 100644 --- a/CoreStore/Setting Up/DataStack.swift +++ b/CoreStore/Setting Up/DataStack.swift @@ -199,7 +199,7 @@ public final class DataStack { configuration: configuration, URL: fileURL, options: [ - NSSQLitePragmasOption: ["WAL": "journal_mode"], + NSSQLitePragmasOption: ["journal_mode": "WAL"], NSInferMappingModelAutomaticallyOption: true, NSMigratePersistentStoresAutomaticallyOption: automigrating ] @@ -254,7 +254,7 @@ public final class DataStack { configuration: configuration, URL: fileURL, options: [ - NSSQLitePragmasOption: ["WAL": "journal_mode"], + NSSQLitePragmasOption: ["journal_mode": "WAL"], NSInferMappingModelAutomaticallyOption: true, NSMigratePersistentStoresAutomaticallyOption: automigrating ] @@ -376,4 +376,16 @@ public final class DataStack { private let storeMetadataUpdateQueue = GCDQueue.createConcurrent("com.coreStore.persistentStoreBarrierQueue") private var configurationStoreMapping = [String: NSPersistentStore]() private var entityConfigurationsMapping = [String: Set]() + + deinit { + + for store in self.coordinator.persistentStores { + + do { + + try self.coordinator.removePersistentStore(store) + } + catch _ { } + } + } } diff --git a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj index 9e0c439..5bd036d 100644 --- a/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj +++ b/CoreStoreDemo/CoreStoreDemo.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ B503FAE01AFDC71700F90881 /* ObjectObserverDemoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B503FADC1AFDC71700F90881 /* ObjectObserverDemoViewController.swift */; }; B503FAE11AFDC71700F90881 /* Palette.swift in Sources */ = {isa = PBXBuildFile; fileRef = B503FADD1AFDC71700F90881 /* Palette.swift */; }; B503FAE21AFDC71700F90881 /* PaletteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B503FADE1AFDC71700F90881 /* PaletteTableViewCell.swift */; }; + B50D67911B4BCFED00124277 /* OrganismV3ToV2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = B50D67901B4BCFED00124277 /* OrganismV3ToV2.xcmappingmodel */; }; B52977D91B120B80003D50A5 /* ObserversViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52977D81B120B80003D50A5 /* ObserversViewController.swift */; }; B52977DD1B120F3B003D50A5 /* TransactionsDemoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52977DC1B120F3B003D50A5 /* TransactionsDemoViewController.swift */; }; B52977DF1B120F83003D50A5 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B52977DE1B120F83003D50A5 /* MapKit.framework */; }; @@ -96,6 +97,7 @@ B503FADC1AFDC71700F90881 /* ObjectObserverDemoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectObserverDemoViewController.swift; sourceTree = ""; }; B503FADD1AFDC71700F90881 /* Palette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Palette.swift; sourceTree = ""; }; B503FADE1AFDC71700F90881 /* PaletteTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PaletteTableViewCell.swift; sourceTree = ""; }; + B50D67901B4BCFED00124277 /* OrganismV3ToV2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; name = OrganismV3ToV2.xcmappingmodel; path = "CoreStoreDemo/MIgrations Demo/OrganismV3ToV2.xcmappingmodel"; sourceTree = SOURCE_ROOT; }; B52977D81B120B80003D50A5 /* ObserversViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserversViewController.swift; sourceTree = ""; }; B52977DC1B120F3B003D50A5 /* TransactionsDemoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransactionsDemoViewController.swift; sourceTree = ""; }; B52977DE1B120F83003D50A5 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; @@ -265,6 +267,7 @@ B5EE258B1B36E40D0000406B /* MigrationsDemoViewController.swift */, B5F45A601B4AE5A700831F2F /* OrganismV2ToV3.xcmappingmodel */, B560070E1B3EC90F00A9A8F9 /* OrganismV2ToV3MigrationPolicy.swift */, + B50D67901B4BCFED00124277 /* OrganismV3ToV2.xcmappingmodel */, ); path = "Migrations Demo"; sourceTree = ""; @@ -394,6 +397,7 @@ B5F45A611B4AE5A700831F2F /* OrganismV2ToV3.xcmappingmodel in Sources */, B503FAE11AFDC71700F90881 /* Palette.swift in Sources */, B503FAE21AFDC71700F90881 /* PaletteTableViewCell.swift in Sources */, + B50D67911B4BCFED00124277 /* OrganismV3ToV2.xcmappingmodel in Sources */, B560070F1B3EC90F00A9A8F9 /* OrganismV2ToV3MigrationPolicy.swift in Sources */, B503FADF1AFDC71700F90881 /* ListObserverDemoViewController.swift in Sources */, B54AAD4F1AF4D26E00848AE0 /* AppDelegate.swift in Sources */, diff --git a/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift index 64ac33b..98f32a0 100644 --- a/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift +++ b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/MigrationsDemoViewController.swift @@ -170,7 +170,7 @@ class MigrationsDemoViewController: UITableViewController { let navigationItem = self.navigationItem navigationItem.leftBarButtonItem?.enabled = enabled navigationItem.rightBarButtonItem?.enabled = enabled - navigationItem.backBarButtonItem?.enabled = enabled + navigationItem.hidesBackButton = !enabled if let tableView = self.tableView { diff --git a/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/OrganismV3ToV2.xcmappingmodel/xcmapping.xml b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/OrganismV3ToV2.xcmappingmodel/xcmapping.xml new file mode 100644 index 0000000..02e5679 --- /dev/null +++ b/CoreStoreDemo/CoreStoreDemo/MIgrations Demo/OrganismV3ToV2.xcmappingmodel/xcmapping.xml @@ -0,0 +1,83 @@ + + + + + + 134481920 + 8160C973-F2E8-4296-AC28-7329092D6700 + 106 + + + + NSPersistenceFrameworkVersion + 526 + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + CoreStoreDemo/MigrationDemo.xcdatamodeld/MigrationDemoV3.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGBrMGtFgkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv +cBIAAYagrxCuAAcACAAXADMANAA1AD0APgBZAFoAWwBhAGIAbgCEAIUAhgCHAIgAiQCKAIsAjACNAKYAqQCwALYAxQDUANcA5gD1APgAWAEIARcBGwEfAS4BNAE1AT0BTAFNAVYBYgFjAWQBZQFmAXsBfAGEAYUBhgGSAaYBpwGoAakBqgGrAawBrQGuAb0BzAHbAd8B7gH9AgwCGwIqAjYCSAJJAkoCSwJMAk0CTgJPAl4CXwJuAn0CjAKNApwCqwK6AsIC1wLYAuAC7AMAAw8DHgMtAzEDQANPA14DbQN8A4gDmgOpA7gDxwPWA9cD5gP1BAQEGQQaBCIELgRCBFEEYARvBHMEggSRBKAErwS+BMoE3ATrBPoFCQUYBScFNgVFBVoFWwVjBW8FgwWSBaEFsAW0BcMF0gXhBfAF/wYLBh0GLAY7BkoGWQZoBncGhgaHBooGkwaXBpsGnwanBqoGrgavVSRudWxs1wAJAAoACwAMAA0ADgAPABAAEQASABMAFAATABZfEA9feGRfcm9vdFBhY2thZ2VWJGNsYXNzXF94ZF9jb21tZW50c18QEF94ZF9tb2RlbE1hbmFnZXJfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVdX3hkX21vZGVsTmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKArYCqgACAq4AAgKzeABgAGQAaABsAHAAdAB4ACgAfACAAIQAiACMAJAAlACYAJwAoACUAEwArACwALQAuAC8AJQAlABNfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASAqICmgAGABIAAgKeAqRAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4ADoAPFdOUy5rZXlzWk5TLm9iamVjdHOhADmABqEAO4AHgCVYT3JnYW5pc23fEBAAPwBAAEEAQgAdAEMARAAfAEUARgAKACEARwBIACQASQBKAEsAJQAlABAATwBQAC0AJQBKAFMAOQBKAFYAVwBYXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gAmALYAEgASAAoAKgKOABIAJgKWABoAJgKSACAgSborVM1dvcmRlcmVk0wA2ADcACgBcAF4APKEAXYALoQBfgAyAJV5YRF9QU3RlcmVvdHlwZdkAHQAhAGMACgAkAGQAHwBJAGUAOwBdAEoAaQATACUALQBYAG1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAB4ALgAmALIAAgAQIgA3TADYANwAKAG8AeQA8qQBwAHEAcgBzAHQAdQB2AHcAeIAOgA+AEIARgBKAE4AUgBWAFqkAegB7AHwAfQB+AH8AgACBAIKAF4AbgByAHoAfgCGAI4AmgCqAJV8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWER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AkwAfAJQACgAhAJUAlgAkAJcAEwWjABMFYABYAFgAWAAtAFgAoAGWAFgAWAATAFiAAICUgACAjwgICAiAGoA7CAiAAAjTADYANwAKBbEFsgA8oKCAJd8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwVgAFgAWABYAC0AWACgAZcAWABYABMAWIAAgCKAAICPCAgICIAagDwICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwVgAFgAWABYAC0AWACgAZgAWABYABMAWIAAgCKAAICPCAgICIAagD0ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwVgAFgAWABYAC0AWACgAZkAWABYABMAWIAAgCKAAICPCAgICIAagD4ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATABMAEwVgAFgAWABYAC0AWACgAZoAWABYABMAWIAAgACAAICPCAgICIAagD8ICIAACN8QDwCOAI8AkAAdAJEAkgCTAB8AlAAKACEAlQCWACQAlwATAPoAEwVgAFgAWABYAC0AWACgAZsAWABYABMAWIAAgCKAAICPCAgICIAagEAICIAACNkAHQAhBgAACgAkBgEAHwBJBgIBYAF/AEoAaQATACUALQBYBgpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAjIA2gAmALIAAgAQIgJvTADYANwAKBgwGFAA8pwI4AjkCOgI7AjwCPQI+gEyATYBOgE+AUIBRgFKnBhUGFgYXBhgGGQYaBhuAnICdgJ6An4CggKGAooAl3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMAEwATBWEAWABYAFgALQBYAKACOABYAFgAEwBYgACAAIAAgJoICAgIgBqATAgIgAAI3xAPAI4AjwCQAB0AkQCSAJMAHwCUAAoAIQCVAJYAJACXABMA+gATBWEAWABYAFgALQBYAKACOQBYAFgAEwBYgACAIoAAgJoICAg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jHaUdpx2pHasdrR2vHbEdsx3yHfQd9h34Hfod+x38Hf0d/h4AHgIeAx4EHgYeBx5GHkgeSh5MHk4eTx5QHlEeUh5UHlYeVx5YHloeWx6aHpwenh6gHqIeox6kHqUeph6oHqoeqx6sHq4erx7uHvAe8h70HvYe9x74Hvke+h78Hv4e/x8AHwIfAx8GH0UfRx9JH0sfTR9OH08fUB9RH1MfVR9WH1cfWR9aH5kfmx+dH58foR+iH6MfpB+lH6cfqR+qH6sfrR+uH+0f7x/xH/Mf9R/2H/cf+B/5H/sf/R/+H/8gASACIE0gcCCQILAgsiC0ILYguCC6ILsgvCC+IL8gwSDCIMQgxiDHIMggyiDLINAg3SDiIOQg5iDrIO0g7yDxIRYhOiFhIYUhhyGJIYshjSGPIZEhkiGUIaEhsiG0IbYhuCG6IbwhviHAIcIh0yHVIdch2SHbId0h3yHhIeMh5SIkIiYiKCIqIiwiLSIuIi8iMCIyIjQiNSI2IjgiOSJ4InoifCJ+IoAigSKCIoMihCKGIogiiSKKIowijSLMIs4i0CLSItQi1SLWItci2CLaItwi3SLeIuAi4SLuIu8i8CLyIzEjMyM1IzcjOSM6IzsjPCM9Iz8jQSNCI0MjRSNGI4UjhyOJI4sjjSOOI48jkCORI5MjlSOWI5cjmSOaI9kj2yPdI98j4SPiI+Mj5CPlI+cj6SPqI+sj7SPuJC0kLyQxJDMkNSQ2JDckOCQ5JDskPSQ+JD8kQSRCJIEkgySFJIckiSSKJIskjCSNJI8kkSSSJJMklSSWJLsk3yUGJSolLCUuJTAlMiU0JTYlNyU5JUYlVSVXJVklWyVdJV8lYSVjJXIldCV2JXgleiV8JX4lgCWCJcElwyXFJcclySXKJcslzCXNJc8l0SXSJdMl1SXWJhUmFyYZJhsmHSYeJh8mICYhJiMmJSYmJicmKSYqJmkmayZtJm8mcSZyJnMmdCZ1JncmeSZ6JnsmfSZ+Jr0mvybBJsMmxSbGJscmyCbJJssmzSbOJs8m0SbSJxEnEycVJxcnGScaJxsnHCcdJx8nISciJyMnJScmJ2UnZydpJ2snbSduJ28ncCdxJ3MndSd2J3cneSd6J7knuye9J78nwSfCJ8MnxCfFJ8cnySfKJ8snzSfOKBkoPChcKHwofiiAKIIohCiGKIcoiCiKKIsojSiOKJAokiiTKJQoliiXKJwoqSiuKLAosii3KLkouyi9KOIpBiktKVEpUylVKVcpWSlbKV0pXilgKW0pfimAKYIphCmGKYgpiimMKY4pnymhKaMppSmnKakpqymtKa8psSnwKfIp9Cn2Kfgp+Sn6Kfsp/Cn+KgAqASoCKgQqBSpEKkYqSCpKKkwqTSpOKk8qUCpSKlQqVSpWKlgqWSqYKpoqnCqeKqAqoSqiKqMqpCqmKqgqqSqqKqwqrSq6KrsqvCq+Kv0q/ysBKwMrBSsGKwcrCCsJKwsrDSsOKw8rESsSK1ErUytVK1crWStaK1srXCtdK18rYStiK2MrZStmK6UrpyupK6srrSuuK68rsCuxK7MrtSu2K7cruSu6K/kr+yv9K/8sASwCLAMsBCwFLAcsCSwKLAssDSwOLE0sTyxRLFMsVSxWLFcsWCxZLFssXSxeLF8sYSxiLIcsqyzSLPYs+Cz6LPws/i0ALQItAy0FLRItIS0jLSUtJy0pLSstLS0vLT4tQC1CLUQtRi1ILUotTC1OLY0tjy2RLZMtlS2WLZctmC2ZLZstnS2eLZ8toS2iLeEt4y3lLect6S3qLest7C3tLe8t8S3yLfMt9S32LjUuNy45LjsuPS4+Lj8uQC5BLkMuRS5GLkcuSS5KLokuiy6NLo8ukS6SLpMulC6VLpcumS6aLpsunS6eLt0u3y7hLuMu5S7mLucu6C7pLusu7S7uLu8u8S7yLzEvMy81LzcvOS86LzsvPC89Lz8vQS9CL0MvRS9GL4Uvhy+JL4svjS+OL48vkC+RL5MvlS+WL5cvmS+aL6Uvri+vL7Evui/FL9Qv3y/tMAIwFjAtMD8wTDBNME4wUDBdMF4wXzBhMG4wbzBwMHIwezCKMJcwpjC4MMww4zD1MP4w/zEBMQ4xDzEQMRIxEzEcMSYxLTE1MUcxTDFRAAAAAAAAAgIAAAAAAAAGtwAAAAAAAAAAAAAAAAAAMVM= + + CoreStoreDemo/MigrationDemo.xcdatamodeld/MigrationDemoV2.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGBW8FcFgkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRv +cBIAAYagrxCWAAcACAAXADMANAA1AD0APgBZAFoAWwBhAGIAbgCEAIUAhgCHAIgAiQCKAIsAjACNAKYAqQCwALYAxQDUANcA5gD1APgAWAEIARcBGwEfAS4BNAE1AT0BTAFNAVYBYAFhAWIBYwF4AXkBgQGCAYMBjwGjAaQBpQGmAacBqAGpAaoBqwG6AckB2AHcAesB+gIJAhgCJwIzAkUCRgJHAkgCSQJKAksCTAJbAmoCeQKIAokCmAKnArYCvgLTAtQC3ALoAvwDCwMaAykDLQM8A0sDWgNpA3gDhAOWA6UDtAPDA9ID4QPwA/8EFAQVBB0EKQQ9BEwEWwRqBG4EfQSMBJsEqgS5BMUE1wTmBOcE9gUFBRQFFQUkBTMFQgVDBUYFTwVTBVcFWwVjBWYFagVrVSRudWxs1wAJAAoACwAMAA0ADgAPABAAEQASABMAFAATABZfEA9feGRfcm9vdFBhY2thZ2VWJGNsYXNzXF94ZF9jb21tZW50c18QEF94ZF9tb2RlbE1hbmFnZXJfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVdX3hkX21vZGVsTmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKAlYCSgACAk4AAgJTeABgAGQAaABsAHAAdAB4ACgAfACAAIQAiACMAJAAlACYAJwAoACUAEwArACwALQAuAC8AJQAlABNfEBxYREJ1Y2tldEZvckNsYXNzZXN3YXNFbmNvZGVkXxAaWERCdWNrZXRGb3JQYWNrYWdlc3N0b3JhZ2VfEBxYREJ1Y2tldEZvckludGVyZmFjZXNzdG9yYWdlXxAPX3hkX293bmluZ01vZGVsXxAdWERCdWNrZXRGb3JQYWNrYWdlc3dhc0VuY29kZWRWX293bmVyXxAbWERCdWNrZXRGb3JEYXRhVHlwZXNzdG9yYWdlW192aXNpYmlsaXR5XxAZWERCdWNrZXRGb3JDbGFzc2Vzc3RvcmFnZVVfbmFtZV8QH1hEQnVja2V0Rm9ySW50ZXJmYWNlc3dhc0VuY29kZWRfEB5YREJ1Y2tldEZvckRhdGFUeXBlc3dhc0VuY29kZWRfEBBfdW5pcXVlRWxlbWVudElEgASAkICOgAGABIAAgI+AkRAAgAWAA4AEgASAAFBTWUVT0wA2ADcACgA4ADoAPFdOUy5rZXlzWk5TLm9iamVjdHOhADmABqEAO4AHgCVYT3JnYW5pc23fEBAAPwBAAEEAQgAdAEMARAAfAEUARgAKACEARwBIACQASQBKAEsAJQAlABAATwBQAC0AJQBKAFMAOQBKAFYAVwBYXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gAmALYAEgASAAoAKgIuABIAJgI2ABoAJgIyACAgSoyHsjFdvcmRlcmVk0wA2ADcACgBcAF4APKEAXYALoQBfgAyAJV5YRF9QU3RlcmVvdHlwZdkAHQAhAGMACgAkAGQAHwBJAGUAOwBdAEoAaQATACUALQBYAG1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAB4ALgAmALIAAgAQIgA3TADYANwAKAG8AeQA8qQBwAHEAcgBzAHQAdQB2AHcAeIAOgA+AEIARgBKAE4AUgBWAFqkAegB7AHwAfQB+AH8AgACBAIKAF4AbgByAHoAfgCGAI4AmgCqAJV8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGl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wFXEVchVzFXUVdxV4FXkVexV8FbsVvRW/FcEVwxXEFcUVxhXHFckVyxXMFc0VzxXQFg8WERYTFhUWFxYYFhkWGhYbFh0WHxYgFiEWIxYkFmMWZRZnFmkWaxZsFm0WbhZvFnEWcxZ0FnUWdxZ4FnsWuha8Fr4WwBbCFsMWxBbFFsYWyBbKFssWzBbOFs8XDhcQFxIXFBcWFxcXGBcZFxoXHBceFx8XIBciFyMXYhdkF2YXaBdqF2sXbBdtF24XcBdyF3MXdBd2F3cXgBeOF5sXqRe2F8kX4BfyGD0YYBiAGKAYohikGKYYqBiqGKsYrBiuGK8YsRiyGLQYthi3GLgYuhi7GMAYzRjSGNQY1hjbGN0Y3xjhGQYZKhlRGXUZdxl5GXsZfRl/GYEZghmEGZEZohmkGaYZqBmqGawZrhmwGbIZwxnFGccZyRnLGc0ZzxnRGdMZ1RoUGhYaGBoaGhwaHRoeGh8aIBoiGiQaJRomGigaKRpoGmoabBpuGnAacRpyGnMadBp2GngaeRp6GnwafRq8Gr4awBrCGsQaxRrGGscayBrKGswazRrOGtAa0RreGt8a4BriGyEbIxslGycbKRsqGysbLBstGy8bMRsyGzMbNRs2G3Ubdxt5G3sbfRt+G38bgBuBG4MbhRuGG4cbiRuKG8kbyxvNG88b0RvSG9Mb1BvVG9cb2RvaG9sb3RveHB0cHxwhHCMcJRwmHCccKBwpHCscLRwuHC8cMRwyHHEccxx1HHcceRx6HHscfBx9HH8cgRyCHIMchRyGHKsczxz2HRodHB0eHSAdIh0kHSYdJx0pHTYdRR1HHUkdSx1NHU8dUR1THWIdZB1mHWgdah1sHW4dcB1yHbEdsx21HbcduR26HbsdvB29Hb8dwR3CHcMdxR3GHgUeBx4JHgseDR4OHg8eEB4RHhMeFR4WHhceGR4aHlkeWx5dHl8eYR5iHmMeZB5lHmceaR5qHmsebR5uHq0erx6xHrMetR62HrceuB65HrsevR6+Hr8ewR7CHwEfAx8FHwcfCR8KHwsfDB8NHw8fER8SHxMfFR8WH1UfVx9ZH1sfXR9eH18fYB9hH2MfZR9mH2cfaR9qH6kfqx+tH68fsR+yH7MftB+1H7cfuR+6H7sfvR++IAkgLCBMIGwgbiBwIHIgdCB2IHcgeCB6IHsgfSB+IIAggiCDIIQghiCHIIwgmSCeIKAgoiCnIKkgqyCtINIg9iEdIUEhQyFFIUchSSFLIU0hTiFQIV0hbiFwIXIhdCF2IXgheiF8IX4hjyGRIZMhlSGXIZkhmyGdIZ8hoSHgIeIh5CHmIegh6SHqIesh7CHuIfAh8SHyIfQh9SI0IjYiOCI6IjwiPSI+Ij8iQCJCIkQiRSJGIkgiSSKIIooijCKOIpAikSKSIpMilCKWIpgimSKaIpwinSKqIqsirCKuIu0i7yLxIvMi9SL2Ivci+CL5Ivsi/SL+Iv8jASMCI0EjQyNFI0cjSSNKI0sjTCNNI08jUSNSI1MjVSNWI5UjlyOZI5sjnSOeI58joCOhI6MjpSOmI6cjqSOqI+kj6yPtI+8j8SPyI/Mj9CP1I/cj+SP6I/sj/SP+JD0kPyRBJEMkRSRGJEckSCRJJEskTSROJE8kUSRSJHckmyTCJOYk6CTqJOwk7iTwJPIk8yT1JQIlESUTJRUlFyUZJRslHSUfJS4lMCUyJTQlNiU4JTolPCU+JX0lfyWBJYMlhSWGJYcliCWJJYsljSWOJY8lkSWSJZQl0yXVJdcl2SXbJdwl3SXeJd8l4SXjJeQl5SXnJegmJyYpJismLSYvJjAmMSYyJjMmNSY3JjgmOSY7JjwmeyZ9Jn8mgSaDJoQmhSaGJocmiSaLJowmjSaPJpAmkibRJtMm1SbXJtkm2ibbJtwm3SbfJuEm4ibjJuUm5iclJycnKScrJy0nLicvJzAnMSczJzUnNic3JzknOid5J3snfSd/J4EngieDJ4QnhSeHJ4kniieLJ40njieZJ6InoyelJ64nuSfIJ9Mn4Sf2KAooISgzKEAoQShCKEQoUShSKFMoVShiKGMoZChmKG8ofiiLKJoorCjAKNco6SjyKPMo9SkCKQMpBCkGKQcpECkaKSEpKSk7KUApRQAAAAAAAAICAAAAAAAABXMAAAAAAAAAAAAAAAAAAClH + + + + + Organism + Undefined + 1 + Organism + 1 + + + + + + YnBsaXN0MDDUAQIDBAUGPD1YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKwH +CBMUGRoiJywtMjZVJG51bGzVCQoLDA0ODxAREllOU09wZXJhbmReTlNTZWxlY3Rvck5hbWVfEBBOU0V4cHJlc3Npb25UeXBlW05TQXJndW1lbnRzViRjbGFzc4ADgAIQBIAGgAtfEBB2YWx1ZUZvcktleVBhdGg60xULDRYXGFpOU1ZhcmlhYmxlgAQQAoAFVnNvdXJjZdIbHB0eWiRjbGFzc25hbWVYJGNsYXNzZXNfEBROU1ZhcmlhYmxlRXhwcmVzc2lvbqMfICFfEBROU1ZhcmlhYmxlRXhwcmVzc2lvblxOU0V4cHJlc3Npb25YTlNPYmplY3TSIw0kJlpOUy5vYmplY3RzoSWAB4AK0w0LKCkqK1lOU0tleVBhdGiACRAKgAhdbnVtYmVyT2ZMaW1ic9IbHC4vXxAcTlNLZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqMwMSFfEBxOU0tleVBhdGhTcGVjaWZpZXJFeHByZXNzaW9uXE5TRXhwcmVzc2lvbtIbHDM0Xk5TTXV0YWJsZUFycmF5ozM1IVdOU0FycmF50hscNzhfEBNOU0tleVBhdGhFeHByZXNzaW9upDk6OyFfEBNOU0tleVBhdGhFeHByZXNzaW9uXxAUTlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHByZXNzaW9uXxAPTlNLZXllZEFyY2hpdmVy0T4/VHJvb3SAAQAIABEAGgAjAC0AMgA3AEQASgBVAF8AbgCBAI0AlACWAJgAmgCcAJ4AsQC4AMMAxQDHAMkA0ADVAOAA6QEAAQQBGwEoATEBNgFBAUMBRQFHAU4BWAFaAVwBXgFsAXEBkAGUAbMBwAHFAdQB2AHgAeUB+wIAAhYCLQI6AkwCTwJUAAAAAAAAAgEAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAlY= + + numberOfFlippers + + + + hasTail + + + + hasHead + + + \ No newline at end of file