Skip to content

Commit c43cee2

Browse files
committed
Extended example
1 parent 2dc72dd commit c43cee2

File tree

22 files changed

+635
-335
lines changed

22 files changed

+635
-335
lines changed

CoreDataMigration-Example.xcodeproj/project.pbxproj

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
3D70ED0721ED328D001C2516 /* Migration2to3ModelMapping.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 3D70ED0621ED328D001C2516 /* Migration2to3ModelMapping.xcmappingmodel */; };
1110
3D8E52F521E0EF2800FE1D35 /* FileManager+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8E52F421E0EF2800FE1D35 /* FileManager+Helper.swift */; };
1211
3D8E52F721E0F98500FE1D35 /* NSManagedObjectContext+Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8E52F621E0F98500FE1D35 /* NSManagedObjectContext+Helper.swift */; };
12+
3DACAAD221EE9D5D00309A75 /* PostSectionWriterTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DACAAD121EE9D5D00309A75 /* PostSectionWriterTableViewCell.swift */; };
13+
3DD99ED021F1118700CB4B6E /* Migration2to3ModelMapping.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = 3DD99ECF21F1118700CB4B6E /* Migration2to3ModelMapping.xcmappingmodel */; };
14+
3DD99ED321F145EC00CB4B6E /* FileManager+ApplicationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD99ED221F145EC00CB4B6E /* FileManager+ApplicationSupport.swift */; };
1315
3DDB26C921EBF87E00388AEE /* PostWriterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDB26C821EBF87E00388AEE /* PostWriterViewController.swift */; };
1416
3DDB26CB21EC00FE00388AEE /* PostViewerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DDB26CA21EC00FE00388AEE /* PostViewerViewController.swift */; };
1517
431DCEAE1F67EC9E00CF6316 /* CoreDataMigration_Example.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 431DCEAA1F67EC7100CF6316 /* CoreDataMigration_Example.xcdatamodeld */; };
@@ -27,7 +29,7 @@
2729
43370DBE1F66F0DF006188EC /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43370DBB1F66F0C0006188EC /* CoreDataManager.swift */; };
2830
4345D4EE1F67E0FE00027D11 /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345D4ED1F67E0FE00027D11 /* UIColor+Hex.swift */; };
2931
4345D4F01F67E10700027D11 /* UIColor+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345D4EF1F67E10700027D11 /* UIColor+Random.swift */; };
30-
4345D4F51F67E1FC00027D11 /* CGFloat+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4345D4F41F67E1FC00027D11 /* CGFloat+Random.swift */; };
32+
C23BD45A21F08A350039A36B /* PostSectionViewerTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23BD45921F08A350039A36B /* PostSectionViewerTableViewCell.swift */; };
3133
C28553DF21DCF5000004C7BA /* CoreDataMigrationVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = C28553DE21DCF5000004C7BA /* CoreDataMigrationVersion.swift */; };
3234
C28553E221DD14090004C7BA /* NSManagedObjectModel+Compatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = C28553E121DD14090004C7BA /* NSManagedObjectModel+Compatible.swift */; };
3335
C28553E421DD1D7B0004C7BA /* NSManagedObjectModel+Resource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C28553E321DD1D7B0004C7BA /* NSManagedObjectModel+Resource.swift */; };
@@ -50,9 +52,11 @@
5052
/* End PBXContainerItemProxy section */
5153

5254
/* Begin PBXFileReference section */
53-
3D70ED0621ED328D001C2516 /* Migration2to3ModelMapping.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Migration2to3ModelMapping.xcmappingmodel; sourceTree = "<group>"; };
5455
3D8E52F421E0EF2800FE1D35 /* FileManager+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+Helper.swift"; sourceTree = "<group>"; };
5556
3D8E52F621E0F98500FE1D35 /* NSManagedObjectContext+Helper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Helper.swift"; sourceTree = "<group>"; };
57+
3DACAAD121EE9D5D00309A75 /* PostSectionWriterTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostSectionWriterTableViewCell.swift; sourceTree = "<group>"; };
58+
3DD99ECF21F1118700CB4B6E /* Migration2to3ModelMapping.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Migration2to3ModelMapping.xcmappingmodel; sourceTree = "<group>"; };
59+
3DD99ED221F145EC00CB4B6E /* FileManager+ApplicationSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+ApplicationSupport.swift"; sourceTree = "<group>"; };
5660
3DDB26C821EBF87E00388AEE /* PostWriterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostWriterViewController.swift; sourceTree = "<group>"; };
5761
3DDB26CA21EC00FE00388AEE /* PostViewerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostViewerViewController.swift; sourceTree = "<group>"; };
5862
431DCEAB1F67EC7100CF6316 /* CoreDataMigration_Example 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreDataMigration_Example 2.xcdatamodel"; sourceTree = "<group>"; };
@@ -75,9 +79,9 @@
7579
43370DBB1F66F0C0006188EC /* CoreDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = "<group>"; };
7680
4345D4ED1F67E0FE00027D11 /* UIColor+Hex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Hex.swift"; sourceTree = "<group>"; };
7781
4345D4EF1F67E10700027D11 /* UIColor+Random.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Random.swift"; sourceTree = "<group>"; };
78-
4345D4F41F67E1FC00027D11 /* CGFloat+Random.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGFloat+Random.swift"; sourceTree = "<group>"; };
7982
43AB8AE51F66E6A5003153B3 /* CoreDataMigration-Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "CoreDataMigration-Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
8083
43AB8AFC1F66E6A5003153B3 /* CoreDataMigration-ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "CoreDataMigration-ExampleTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
84+
C23BD45921F08A350039A36B /* PostSectionViewerTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostSectionViewerTableViewCell.swift; sourceTree = "<group>"; };
8185
C28553DE21DCF5000004C7BA /* CoreDataMigrationVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataMigrationVersion.swift; sourceTree = "<group>"; };
8286
C28553E121DD14090004C7BA /* NSManagedObjectModel+Compatible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Compatible.swift"; sourceTree = "<group>"; };
8387
C28553E321DD1D7B0004C7BA /* NSManagedObjectModel+Resource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectModel+Resource.swift"; sourceTree = "<group>"; };
@@ -117,10 +121,19 @@
117121
path = Helpers;
118122
sourceTree = "<group>";
119123
};
124+
3DD99ED121F145CF00CB4B6E /* FileManager */ = {
125+
isa = PBXGroup;
126+
children = (
127+
3DD99ED221F145EC00CB4B6E /* FileManager+ApplicationSupport.swift */,
128+
);
129+
path = FileManager;
130+
sourceTree = "<group>";
131+
};
120132
3DDB26C621EBF86300388AEE /* Viewer */ = {
121133
isa = PBXGroup;
122134
children = (
123135
3DDB26CA21EC00FE00388AEE /* PostViewerViewController.swift */,
136+
C23BD45921F08A350039A36B /* PostSectionViewerTableViewCell.swift */,
124137
);
125138
path = Viewer;
126139
sourceTree = "<group>";
@@ -129,6 +142,7 @@
129142
isa = PBXGroup;
130143
children = (
131144
3DDB26C821EBF87E00388AEE /* PostWriterViewController.swift */,
145+
3DACAAD121EE9D5D00309A75 /* PostSectionWriterTableViewCell.swift */,
132146
);
133147
path = Writer;
134148
sourceTree = "<group>";
@@ -148,7 +162,7 @@
148162
431DCEB31F67EE2600CF6316 /* Mappings */ = {
149163
isa = PBXGroup;
150164
children = (
151-
3D70ED0621ED328D001C2516 /* Migration2to3ModelMapping.xcmappingmodel */,
165+
3DD99ECF21F1118700CB4B6E /* Migration2to3ModelMapping.xcmappingmodel */,
152166
);
153167
path = Mappings;
154168
sourceTree = "<group>";
@@ -245,7 +259,7 @@
245259
4345D4EA1F67E0DD00027D11 /* Extensions */ = {
246260
isa = PBXGroup;
247261
children = (
248-
4345D4F31F67E1FC00027D11 /* CGFloat */,
262+
3DD99ED121F145CF00CB4B6E /* FileManager */,
249263
C28553E021DD13EF0004C7BA /* NSManagedObjectModel */,
250264
431DCEBC1F67F07100CF6316 /* NSPersistentStoreCoordinator */,
251265
4345D4EC1F67E0DD00027D11 /* UIColor */,
@@ -262,14 +276,6 @@
262276
path = UIColor;
263277
sourceTree = "<group>";
264278
};
265-
4345D4F31F67E1FC00027D11 /* CGFloat */ = {
266-
isa = PBXGroup;
267-
children = (
268-
4345D4F41F67E1FC00027D11 /* CGFloat+Random.swift */,
269-
);
270-
path = CGFloat;
271-
sourceTree = "<group>";
272-
};
273279
43AB8ADC1F66E6A5003153B3 = {
274280
isa = PBXGroup;
275281
children = (
@@ -491,23 +497,25 @@
491497
files = (
492498
43370DB01F66E7A6006188EC /* AppDelegate.swift in Sources */,
493499
431DCEC01F67F18100CF6316 /* CoreDataMigrator.swift in Sources */,
494-
3D70ED0721ED328D001C2516 /* Migration2to3ModelMapping.xcmappingmodel in Sources */,
495500
C28553E421DD1D7B0004C7BA /* NSManagedObjectModel+Resource.swift in Sources */,
496501
431DCECB1F67F93000CF6316 /* AppLoadingViewController.swift in Sources */,
497502
3DDB26CB21EC00FE00388AEE /* PostViewerViewController.swift in Sources */,
503+
3DD99ED021F1118700CB4B6E /* Migration2to3ModelMapping.xcmappingmodel in Sources */,
498504
C28553E221DD14090004C7BA /* NSManagedObjectModel+Compatible.swift in Sources */,
499-
4345D4F51F67E1FC00027D11 /* CGFloat+Random.swift in Sources */,
500505
C28553DF21DCF5000004C7BA /* CoreDataMigrationVersion.swift in Sources */,
501506
432EA5591F6C552800EFE008 /* NSPersistentStoreCoordinator+SQLite.swift in Sources */,
507+
C23BD45A21F08A350039A36B /* PostSectionViewerTableViewCell.swift in Sources */,
502508
4345D4F01F67E10700027D11 /* UIColor+Random.swift in Sources */,
503509
4345D4EE1F67E0FE00027D11 /* UIColor+Hex.swift in Sources */,
504510
431DCED21F6815A300CF6316 /* Post2ToPost3MigrationPolicy.swift in Sources */,
505511
431DCECD1F67FE0800CF6316 /* PostTableViewCell.swift in Sources */,
506512
431DCECC1F67FE0500CF6316 /* PostsViewController.swift in Sources */,
507513
43370DBE1F66F0DF006188EC /* CoreDataManager.swift in Sources */,
514+
3DD99ED321F145EC00CB4B6E /* FileManager+ApplicationSupport.swift in Sources */,
508515
431DCEBF1F67F18100CF6316 /* CoreDataMigrationStep.swift in Sources */,
509516
431DCEAE1F67EC9E00CF6316 /* CoreDataMigration_Example.xcdatamodeld in Sources */,
510517
3DDB26C921EBF87E00388AEE /* PostWriterViewController.swift in Sources */,
518+
3DACAAD221EE9D5D00309A75 /* PostSectionWriterTableViewCell.swift in Sources */,
511519
);
512520
runOnlyForDeploymentPostprocessing = 0;
513521
};

CoreDataMigration-Example.xcodeproj/xcshareddata/xcschemes/CoreDataMigration-Example.xcscheme

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
buildConfiguration = "Debug"
2727
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
2828
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29-
shouldUseLaunchSchemeArgsEnv = "YES">
29+
shouldUseLaunchSchemeArgsEnv = "NO">
3030
<Testables>
3131
<TestableReference
3232
skipped = "NO">
@@ -48,6 +48,13 @@
4848
ReferencedContainer = "container:CoreDataMigration-Example.xcodeproj">
4949
</BuildableReference>
5050
</MacroExpansion>
51+
<EnvironmentVariables>
52+
<EnvironmentVariable
53+
key = "runningTests"
54+
value = "YES"
55+
isEnabled = "YES">
56+
</EnvironmentVariable>
57+
</EnvironmentVariables>
5158
<AdditionalOptions>
5259
</AdditionalOptions>
5360
</TestAction>

CoreDataMigration-Example/Application/AppDelegate.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
1717
// MARK: - AppLifecycle
1818

1919
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
20+
guard ProcessInfo.processInfo.environment["runningTests"] == nil else {
21+
FileManager.clearApplicationSupportDirectoryContents()
22+
return true
23+
}
2024

2125
CoreDataManager.shared.setup {
2226
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { // just for example purposes

CoreDataMigration-Example/CoreData/Migration/Mappings/Migration2to3ModelMapping.xcmappingmodel/xcmapping.xml

Lines changed: 42 additions & 39 deletions
Large diffs are not rendered by default.

CoreDataMigration-Example/CoreData/Migration/Policies/Post2ToPost3MigrationPolicy.swift

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,25 @@ import CoreData
1010

1111
final class Post2ToPost3MigrationPolicy: NSEntityMigrationPolicy {
1212

13-
override func createDestinationInstances(forSource sInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws {
14-
try super.createDestinationInstances(forSource: sInstance, in: mapping, manager: manager)
13+
override func createDestinationInstances(forSource sourceInstance: NSManagedObject, in mapping: NSEntityMapping, manager: NSMigrationManager) throws {
14+
try super.createDestinationInstances(forSource: sourceInstance, in: mapping, manager: manager)
1515

16-
guard let destinationPost = manager.destinationInstances(forEntityMappingName: mapping.name, sourceInstances: [sInstance]).first else {
16+
guard let destinationPost = manager.destinationInstances(forEntityMappingName: mapping.name, sourceInstances: [sourceInstance]).first else {
1717
fatalError("was expected a post")
1818
}
1919

20-
let sourceBody = sInstance.value(forKey: "content") as? String
21-
let sourceTitle = sourceBody?.prefix(80)
22-
let sourceHexColor = sInstance.value(forKey: "hexColor")
20+
let sourceBody = sourceInstance.value(forKey: "content") as? String
21+
let sourceTitle = sourceBody?.prefix(4).appending("...")
2322

24-
let titleContent = NSEntityDescription.insertNewObject(forEntityName: "Content", into: destinationPost.managedObjectContext!)
25-
titleContent.setValue(sourceTitle, forKey: "content")
26-
titleContent.setValue(sourceHexColor, forKey: "hexColor")
27-
titleContent.setValue(destinationPost, forKey: "post")
28-
destinationPost.setValue(titleContent, forKey: "title")
23+
let section = NSEntityDescription.insertNewObject(forEntityName: "Section", into: destinationPost.managedObjectContext!)
24+
section.setValue(sourceTitle, forKey: "title")
25+
section.setValue(sourceBody, forKey: "body")
26+
section.setValue(destinationPost, forKey: "post")
27+
section.setValue(0, forKey: "index")
2928

30-
let bodyContent = NSEntityDescription.insertNewObject(forEntityName: "Content", into: destinationPost.managedObjectContext!)
31-
bodyContent.setValue(sourceBody, forKey: "content")
32-
bodyContent.setValue(sourceHexColor, forKey: "hexColor")
33-
bodyContent.setValue(destinationPost, forKey: "post")
34-
destinationPost.setValue(bodyContent, forKey: "body")
29+
var sections = Set<NSManagedObject>()
30+
sections.insert(section)
31+
32+
destinationPost.setValue(sections, forKey: "sections")
3533
}
3634
}
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
22
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="18C54" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
3-
<entity name="Content" representedClassName="Content" syncable="YES" codeGenerationType="class">
4-
<attribute name="content" optional="YES" attributeType="String" syncable="YES"/>
5-
<attribute name="hexColor" optional="YES" attributeType="String" syncable="YES"/>
6-
<relationship name="post" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Post" syncable="YES"/>
7-
</entity>
83
<entity name="Post" representedClassName="Post" syncable="YES" codeGenerationType="class">
94
<attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
5+
<attribute name="hexColor" optional="YES" attributeType="String" syncable="YES"/>
106
<attribute name="postID" optional="YES" attributeType="String" syncable="YES"/>
11-
<relationship name="body" maxCount="1" deletionRule="Nullify" destinationEntity="Content" syncable="YES"/>
12-
<relationship name="title" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Content" syncable="YES"/>
7+
<relationship name="sections" toMany="YES" deletionRule="Cascade" destinationEntity="Section" inverseName="post" inverseEntity="Section" syncable="YES"/>
8+
</entity>
9+
<entity name="Section" representedClassName="Section" syncable="YES" codeGenerationType="class">
10+
<attribute name="body" optional="YES" attributeType="String" syncable="YES"/>
11+
<attribute name="index" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
12+
<attribute name="title" optional="YES" attributeType="String" syncable="YES"/>
13+
<relationship name="post" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Post" inverseName="sections" inverseEntity="Post" syncable="YES"/>
1314
</entity>
1415
<elements>
15-
<element name="Content" positionX="-63" positionY="9" width="128" height="90"/>
16+
<element name="Section" positionX="-63" positionY="9" width="128" height="105"/>
1617
<element name="Post" positionX="-63" positionY="-18" width="128" height="105"/>
1718
</elements>
1819
</model>
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
22
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="18C54" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
3-
<entity name="Content" representedClassName="Content" syncable="YES" codeGenerationType="class">
4-
<attribute name="content" optional="YES" attributeType="String" syncable="YES"/>
5-
<attribute name="hexColor" optional="YES" attributeType="String" syncable="YES"/>
6-
<relationship name="post" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Post" syncable="YES"/>
7-
</entity>
83
<entity name="Post" representedClassName="Post" syncable="YES" codeGenerationType="class">
94
<attribute name="date" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
5+
<attribute name="hexColor" optional="YES" attributeType="String" syncable="YES"/>
106
<attribute name="postID" optional="YES" attributeType="String" syncable="YES"/>
117
<attribute name="softDeleted" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES" syncable="YES"/>
12-
<relationship name="body" maxCount="1" deletionRule="Nullify" destinationEntity="Content" syncable="YES"/>
13-
<relationship name="title" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Content" syncable="YES"/>
8+
<relationship name="sections" toMany="YES" deletionRule="Nullify" destinationEntity="Section" inverseName="post" inverseEntity="Section" syncable="YES"/>
9+
</entity>
10+
<entity name="Section" representedClassName="Section" syncable="YES" codeGenerationType="class">
11+
<attribute name="body" optional="YES" attributeType="String" syncable="YES"/>
12+
<attribute name="index" optional="YES" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="YES" syncable="YES"/>
13+
<attribute name="title" optional="YES" attributeType="String" syncable="YES"/>
14+
<relationship name="post" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Post" inverseName="sections" inverseEntity="Post" syncable="YES"/>
1415
</entity>
1516
<elements>
16-
<element name="Content" positionX="-63" positionY="9" width="128" height="90"/>
17+
<element name="Section" positionX="-63" positionY="9" width="128" height="105"/>
1718
<element name="Post" positionX="-63" positionY="-18" width="128" height="120"/>
1819
</elements>
1920
</model>

CoreDataMigration-Example/Extensions/CGFloat/CGFloat+Random.swift

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)