实例介绍
Take control of your data in iOS apps using Core Data, Apple’s powerful object graph and persistence framework. Currently updated to: Platform: iOS12; Language: Swift4.2; Editor: Xcode10
【实例截图】
【核心代码】
4744300845135437876.zip
├── 01-your-first-core-data-app
│ └── final
│ └── HitList
│ ├── HitList
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ ├── Contents.json
│ │ │ └── rw-logo.imageset
│ │ │ ├── Contents.json
│ │ │ └── Razewarelogo_1024.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── HitList.xcdatamodeld
│ │ │ └── HitList.xcdatamodel
│ │ │ └── contents
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── HitList.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 02-nsmanagedobject-subclasses
│ ├── final
│ │ └── Bow Ties
│ │ ├── Bow Ties
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ ├── bowties
│ │ │ │ │ ├── blue.imageset
│ │ │ │ │ │ ├── bow-tie--blue.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── green.imageset
│ │ │ │ │ │ ├── bow-tie--green.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── indigo.imageset
│ │ │ │ │ │ ├── bow-tie--indigo.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── orange.imageset
│ │ │ │ │ │ ├── bow-tie--orange.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── red.imageset
│ │ │ │ │ │ ├── bow-tie--red.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── violet.imageset
│ │ │ │ │ │ ├── bow-tie--purple@4x.pdf
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── yellow.imageset
│ │ │ │ │ ├── bow-tie--yellow.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ └── rw-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Razewarelogo_1024.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Bowtie+CoreDataClass.swift
│ │ │ ├── Bowtie+CoreDataProperties.swift
│ │ │ ├── Bow_Ties.xcdatamodeld
│ │ │ │ └── Bow_Ties.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── Info.plist
│ │ │ ├── SampleData.plist
│ │ │ └── ViewController.swift
│ │ └── Bow Ties.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ └── Bow Ties
│ ├── Bow Ties
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ ├── bowties
│ │ │ │ ├── blue.imageset
│ │ │ │ │ ├── bow-tie--blue.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── green.imageset
│ │ │ │ │ ├── bow-tie--green.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── indigo.imageset
│ │ │ │ │ ├── bow-tie--indigo.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── orange.imageset
│ │ │ │ │ ├── bow-tie--orange.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── red.imageset
│ │ │ │ │ ├── bow-tie--red.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── violet.imageset
│ │ │ │ │ ├── bow-tie--purple@4x.pdf
│ │ │ │ │ └── Contents.json
│ │ │ │ └── yellow.imageset
│ │ │ │ ├── bow-tie--yellow.pdf
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ └── rw-logo.imageset
│ │ │ ├── Contents.json
│ │ │ └── Razewarelogo_1024.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Bow_Ties.xcdatamodeld
│ │ │ └── Bow_Ties.xcdatamodel
│ │ │ └── contents
│ │ ├── Info.plist
│ │ ├── SampleData.plist
│ │ └── ViewController.swift
│ └── Bow Ties.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 03-the-core-data-stack
│ ├── final
│ │ └── Dog Walk
│ │ ├── Dog Walk
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── rw-logo.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Razewarelogo_1024.png
│ │ │ │ └── sampleDog.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── placeholder.jpeg
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── Dog+CoreDataClass.swift
│ │ │ ├── Dog+CoreDataProperties.swift
│ │ │ ├── Dog Walk.xcdatamodeld
│ │ │ │ └── Dog Walk.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── Dog_Walk.xcdatamodeld
│ │ │ │ └── Dog_Walk.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── Info.plist
│ │ │ ├── ViewController.swift
│ │ │ ├── Walk+CoreDataClass.swift
│ │ │ └── Walk+CoreDataProperties.swift
│ │ └── Dog Walk.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ └── Dog Walk
│ ├── Dog Walk
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ ├── Contents.json
│ │ │ ├── rw-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Razewarelogo_1024.png
│ │ │ └── sampleDog.imageset
│ │ │ ├── Contents.json
│ │ │ └── placeholder.jpeg
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Dog_Walk.xcdatamodeld
│ │ │ └── Dog_Walk.xcdatamodel
│ │ │ └── contents
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── Dog Walk.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 04-intermediate-fetching
│ ├── final
│ │ └── Bubble Tea Finder
│ │ ├── Bubble Tea Finder
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ ├── Contents.json
│ │ │ │ └── rw-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Razewarelogo_1024.png
│ │ │ ├── attribution.txt
│ │ │ ├── Base.lproj
│ │ │ │ └── LaunchScreen.storyboard
│ │ │ ├── Bubble_Tea_Finder.xcdatamodeld
│ │ │ │ └── Bubble_Tea_Finder.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── FilterViewController.swift
│ │ │ ├── Info.plist
│ │ │ ├── Main.storyboard
│ │ │ ├── NSManagedObject
│ │ │ │ ├── Category+CoreDataClass.swift
│ │ │ │ ├── Category+CoreDataProperties.swift
│ │ │ │ ├── Location+CoreDataClass.swift
│ │ │ │ ├── Location+CoreDataProperties.swift
│ │ │ │ ├── PriceInfo+CoreDataClass.swift
│ │ │ │ ├── PriceInfo+CoreDataProperties.swift
│ │ │ │ ├── Stats+CoreDataClass.swift
│ │ │ │ ├── Stats+CoreDataProperties.swift
│ │ │ │ ├── Venue+CoreDataClass.swift
│ │ │ │ └── Venue+CoreDataProperties.swift
│ │ │ ├── seed.json
│ │ │ └── ViewController.swift
│ │ └── Bubble Tea Finder.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ └── Bubble Tea Finder
│ ├── Bubble Tea Finder
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ ├── Contents.json
│ │ │ └── rw-logo.imageset
│ │ │ ├── Contents.json
│ │ │ └── Razewarelogo_1024.png
│ │ ├── attribution.txt
│ │ ├── Base.lproj
│ │ │ └── LaunchScreen.storyboard
│ │ ├── Bubble_Tea_Finder.xcdatamodeld
│ │ │ └── Bubble_Tea_Finder.xcdatamodel
│ │ │ └── contents
│ │ ├── CoreDataStack.swift
│ │ ├── FilterViewController.swift
│ │ ├── Info.plist
│ │ ├── Main.storyboard
│ │ ├── NSManagedObject
│ │ │ ├── Category+CoreDataClass.swift
│ │ │ ├── Category+CoreDataProperties.swift
│ │ │ ├── Location+CoreDataClass.swift
│ │ │ ├── Location+CoreDataProperties.swift
│ │ │ ├── PriceInfo+CoreDataClass.swift
│ │ │ ├── PriceInfo+CoreDataProperties.swift
│ │ │ ├── Stats+CoreDataClass.swift
│ │ │ ├── Stats+CoreDataProperties.swift
│ │ │ ├── Venue+CoreDataClass.swift
│ │ │ └── Venue+CoreDataProperties.swift
│ │ ├── seed.json
│ │ └── ViewController.swift
│ └── Bubble Tea Finder.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 05-nsfetchedresultscontroller
│ ├── final
│ │ └── WorldCup
│ │ ├── WorldCup
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── Icon20@2x.png
│ │ │ │ │ ├── Icon20.png
│ │ │ │ │ ├── Icon29@2x.png
│ │ │ │ │ ├── Icon29.png
│ │ │ │ │ ├── Icon40@2x.png
│ │ │ │ │ ├── Icon40.png
│ │ │ │ │ ├── Icon76@2x.png
│ │ │ │ │ ├── Icon76.png
│ │ │ │ │ ├── Icon83.5@2x.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Flags
│ │ │ │ │ ├── algeria-flag.imageset
│ │ │ │ │ │ ├── 640px-Flag_of_Algeria.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── argentina-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Argentina.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── australia-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Australia.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── belgium-flag.imageset
│ │ │ │ │ │ ├── 167px-Flag_of_Belgium.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bosnia-herzegovina-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Bosnia_and_Herzegovina.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── brazil-flag.imageset
│ │ │ │ │ │ ├── 207px-Flag_of_Brazil.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── cameroon-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Cameroon.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── chile-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Chile.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── colombia-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Colombia.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── costa-rica-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Costa_Rica.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── croatia-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Croatia.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── ecuador-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Ecuador.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── england-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_England.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── france-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_France.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── germany-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Germany.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── ghana-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Ghana.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── greece-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Greece.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── honduras-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Honduras.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── iran-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Iran.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── italy-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Italy.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── ivory-coast-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Cote_d'Ivoire.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── japan-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Japan.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── korea-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_South_Korea.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── mexico-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Mexico.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── netherlands-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_the_Netherlands.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── nigeria-flag.imageset
│ │ │ │ │ │ ├── 220px-Flag_of_Nigeria.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── portugal-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Portugal.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── russia-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Russia.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── spain-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Spain.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── switzerland-flag.imageset
│ │ │ │ │ │ ├── 480px-Flag_of_Switzerland.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── uruguay-flag.imageset
│ │ │ │ │ │ ├── 218px-Flag_of_Uruguay.svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── usa-flag.imageset
│ │ │ │ │ │ ├── 640px-Flag_of_the_United_States_(Pantone).svg.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── wenderland-flag.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── wenderland.png
│ │ │ │ └── rw-logo.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Razewarelogo_1024.png
│ │ │ ├── attribution.txt
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── Info.plist
│ │ │ ├── seed.json
│ │ │ ├── TeamCell.swift
│ │ │ ├── Team+CoreDataClass.swift
│ │ │ ├── Team+CoreDataProperties.swift
│ │ │ ├── ViewController.swift
│ │ │ └── WorldCup.xcdatamodeld
│ │ │ └── WorldCup.xcdatamodel
│ │ │ └── contents
│ │ └── WorldCup.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ └── WorldCup
│ ├── WorldCup
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── Icon20@2x.png
│ │ │ │ ├── Icon20.png
│ │ │ │ ├── Icon29@2x.png
│ │ │ │ ├── Icon29.png
│ │ │ │ ├── Icon40@2x.png
│ │ │ │ ├── Icon40.png
│ │ │ │ ├── Icon76@2x.png
│ │ │ │ ├── Icon76.png
│ │ │ │ ├── Icon83.5@2x.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ ├── Contents.json
│ │ │ ├── Flags
│ │ │ │ ├── algeria-flag.imageset
│ │ │ │ │ ├── 640px-Flag_of_Algeria.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── argentina-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Argentina.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── australia-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Australia.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── belgium-flag.imageset
│ │ │ │ │ ├── 167px-Flag_of_Belgium.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bosnia-herzegovina-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Bosnia_and_Herzegovina.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── brazil-flag.imageset
│ │ │ │ │ ├── 207px-Flag_of_Brazil.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── cameroon-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Cameroon.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── chile-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Chile.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── colombia-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Colombia.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── costa-rica-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Costa_Rica.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── croatia-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Croatia.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── ecuador-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Ecuador.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── england-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_England.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── france-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_France.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── germany-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Germany.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── ghana-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Ghana.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── greece-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Greece.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── honduras-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Honduras.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── iran-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Iran.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── italy-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Italy.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── ivory-coast-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Cote_d'Ivoire.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── japan-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Japan.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── korea-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_South_Korea.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── mexico-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Mexico.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── netherlands-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_the_Netherlands.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── nigeria-flag.imageset
│ │ │ │ │ ├── 220px-Flag_of_Nigeria.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── portugal-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Portugal.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── russia-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Russia.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── spain-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Spain.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── switzerland-flag.imageset
│ │ │ │ │ ├── 480px-Flag_of_Switzerland.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── uruguay-flag.imageset
│ │ │ │ │ ├── 218px-Flag_of_Uruguay.svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── usa-flag.imageset
│ │ │ │ │ ├── 640px-Flag_of_the_United_States_(Pantone).svg.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── wenderland-flag.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── wenderland.png
│ │ │ └── rw-logo.imageset
│ │ │ ├── Contents.json
│ │ │ └── Razewarelogo_1024.png
│ │ ├── attribution.txt
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── CoreDataStack.swift
│ │ ├── Info.plist
│ │ ├── seed.json
│ │ ├── TeamCell.swift
│ │ ├── Team+CoreDataClass.swift
│ │ ├── Team+CoreDataProperties.swift
│ │ ├── ViewController.swift
│ │ └── WorldCup.xcdatamodeld
│ │ └── WorldCup.xcdatamodel
│ │ └── contents
│ └── WorldCup.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 06-versioning-and-migration
│ ├── final
│ │ ├── UnCloudNotes
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Attachment.swift
│ │ │ ├── AttachmentToImageAttachmentMigrationPolicyV3toV4.swift
│ │ │ ├── AttachPhotoViewController.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── CreateNoteViewController.swift
│ │ │ ├── DataMigrationManager.swift
│ │ │ ├── ImageAttachment.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ ├── ImageTransformer.swift
│ │ │ ├── Info.plist
│ │ │ ├── NoteDetailViewController.swift
│ │ │ ├── NoteImageTableViewCell.swift
│ │ │ ├── NotesListViewController+Additions.h
│ │ │ ├── NotesListViewController.swift
│ │ │ ├── Note.swift
│ │ │ ├── NoteTableViewCell.swift
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ ├── UnCloudNotesDataModel v4.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── UnCloudNotes.entitlements
│ │ │ ├── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ │ │ └── xcmapping.xml
│ │ │ └── UnCloudNotesMappingModel_v3_to_v4.xcmappingmodel
│ │ │ └── xcmapping.xml
│ │ └── UnCloudNotes.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── starter
│ │ ├── UnCloudNotes
│ │ │ ├── AppDelegate.swift
│ │ │ ├── AttachPhotoViewController.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── CreateNoteViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── ImageTransformer.swift
│ │ │ ├── Info.plist
│ │ │ ├── NoteDetailViewController.swift
│ │ │ ├── NoteImageTableViewCell.swift
│ │ │ ├── NotesListViewController+Additions.h
│ │ │ ├── NotesListViewController.swift
│ │ │ ├── Note.swift
│ │ │ ├── NoteTableViewCell.swift
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ │ └── contents
│ │ │ └── UnCloudNotes.entitlements
│ │ └── UnCloudNotes.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── v2
│ │ ├── UnCloudNotes
│ │ │ ├── AppDelegate.swift
│ │ │ ├── AttachPhotoViewController.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── CreateNoteViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ ├── ImageTransformer.swift
│ │ │ ├── Info.plist
│ │ │ ├── NoteDetailViewController.swift
│ │ │ ├── NoteImageTableViewCell.swift
│ │ │ ├── NotesListViewController+Additions.h
│ │ │ ├── NotesListViewController.swift
│ │ │ ├── Note.swift
│ │ │ ├── NoteTableViewCell.swift
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ │ └── contents
│ │ │ └── UnCloudNotes.entitlements
│ │ └── UnCloudNotes.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── v3
│ │ ├── UnCloudNotes
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Attachment.swift
│ │ │ ├── AttachPhotoViewController.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── CreateNoteViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ │ └── icon-app-60@3x.png
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ ├── ImageTransformer.swift
│ │ │ ├── Info.plist
│ │ │ ├── NoteDetailViewController.swift
│ │ │ ├── NoteImageTableViewCell.swift
│ │ │ ├── NotesListViewController+Additions.h
│ │ │ ├── NotesListViewController.swift
│ │ │ ├── Note.swift
│ │ │ ├── NoteTableViewCell.swift
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ │ │ └── contents
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── UnCloudNotes.entitlements
│ │ │ └── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ │ └── xcmapping.xml
│ │ └── UnCloudNotes.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── v4
│ ├── UnCloudNotes
│ │ ├── AppDelegate.swift
│ │ ├── Attachment.swift
│ │ ├── AttachmentToImageAttachmentMigrationPolicyV3toV4.swift
│ │ ├── AttachPhotoViewController.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── CoreDataStack.swift
│ │ ├── CreateNoteViewController.swift
│ │ ├── ImageAttachment.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── icon-app-20@2x.png
│ │ │ │ ├── icon-app-20@3x.png
│ │ │ │ ├── icon-app-29@2x.png
│ │ │ │ ├── icon-app-29@3x copy.png
│ │ │ │ ├── icon-app-40@2x.png
│ │ │ │ ├── icon-app-40@3x.png
│ │ │ │ ├── icon-app-60@2x.png
│ │ │ │ └── icon-app-60@3x.png
│ │ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ │ ├── ImageTransformer.swift
│ │ ├── Info.plist
│ │ ├── NoteDetailViewController.swift
│ │ ├── NoteImageTableViewCell.swift
│ │ ├── NotesListViewController+Additions.h
│ │ ├── NotesListViewController.swift
│ │ ├── Note.swift
│ │ ├── NoteTableViewCell.swift
│ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── UnCloudNotesDataModel v4.xcdatamodel
│ │ │ │ └── contents
│ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ └── contents
│ │ ├── UnCloudNotes.entitlements
│ │ ├── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ │ └── xcmapping.xml
│ │ └── UnCloudNotesMappingModel_v3_to_v4.xcmappingmodel
│ │ └── xcmapping.xml
│ └── UnCloudNotes.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 07-unit-testing
│ ├── challenge
│ │ ├── CampgroundManager
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ └── Main.storyboard
│ │ │ ├── Camper+CoreDataProperties.swift
│ │ │ ├── CamperService.swift
│ │ │ ├── Camper.swift
│ │ │ ├── CampgroundManager-Bridging-Header.h
│ │ │ ├── CampgroundManager.xcdatamodeld
│ │ │ │ └── CampgroundManager.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── CampSite+CoreDataProperties.swift
│ │ │ ├── CampSiteService.swift
│ │ │ ├── CampSite.swift
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ ├── LaunchScreen.storyboard
│ │ │ ├── MasterViewController.swift
│ │ │ ├── Reservation+CoreDataProperties.swift
│ │ │ ├── ReservationService.swift
│ │ │ └── Reservation.swift
│ │ ├── CampgroundManagerTests
│ │ │ ├── CamperServiceTests.swift
│ │ │ ├── CampSiteServiceTests.swift
│ │ │ ├── Info.plist
│ │ │ ├── ReservationServiceTests.swift
│ │ │ └── TestCoreDataStack.swift
│ │ └── CampgroundManager.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── CampgroundManager
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ └── Main.storyboard
│ │ │ ├── Camper+CoreDataProperties.swift
│ │ │ ├── CamperService.swift
│ │ │ ├── Camper.swift
│ │ │ ├── CampgroundManager-Bridging-Header.h
│ │ │ ├── CampgroundManager.xcdatamodeld
│ │ │ │ └── CampgroundManager.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── CampSite+CoreDataProperties.swift
│ │ │ ├── CampSiteService.swift
│ │ │ ├── CampSite.swift
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── LaunchImage.launchimage
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ ├── LaunchScreen.storyboard
│ │ │ ├── MasterViewController.swift
│ │ │ ├── Reservation+CoreDataProperties.swift
│ │ │ ├── ReservationService.swift
│ │ │ └── Reservation.swift
│ │ ├── CampgroundManagerTests
│ │ │ ├── CamperServiceTests.swift
│ │ │ ├── CampSiteServiceTests.swift
│ │ │ ├── Info.plist
│ │ │ ├── ReservationServiceTests.swift
│ │ │ └── TestCoreDataStack.swift
│ │ └── CampgroundManager.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── CampgroundManager
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── Camper+CoreDataProperties.swift
│ │ ├── CamperService.swift
│ │ ├── Camper.swift
│ │ ├── CampgroundManager-Bridging-Header.h
│ │ ├── CampgroundManager.xcdatamodeld
│ │ │ └── CampgroundManager.xcdatamodel
│ │ │ └── contents
│ │ ├── CampSite+CoreDataProperties.swift
│ │ ├── CampSiteService.swift
│ │ ├── CampSite.swift
│ │ ├── CoreDataStack.swift
│ │ ├── DetailViewController.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ ├── LaunchScreen.storyboard
│ │ ├── MasterViewController.swift
│ │ ├── Reservation+CoreDataProperties.swift
│ │ ├── ReservationService.swift
│ │ └── Reservation.swift
│ ├── CampgroundManagerTests
│ │ └── Info.plist
│ └── CampgroundManager.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 08-measuring-and-boosting-performance
│ ├── final
│ │ └── EmployeeDirectory
│ │ ├── EmployeeDirectory
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Attribution.txt
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── DepartmentDetailsViewController.swift
│ │ │ ├── DepartmentListViewController.swift
│ │ │ ├── EmployeeDetailViewController.swift
│ │ │ ├── EmployeeDirectory.swift
│ │ │ ├── EmployeeDirectory.xcdatamodeld
│ │ │ │ └── EmployeeDirectory.xcdatamodel
│ │ │ │ └── contents
│ │ │ ├── EmployeeListViewController.swift
│ │ │ ├── EmployeePicture.swift
│ │ │ ├── EmployeePictureViewController.swift
│ │ │ ├── Employee.swift
│ │ │ ├── EmployeeTableViewCell.swift
│ │ │ ├── faces
│ │ │ │ ├── face01.jpg
│ │ │ │ ├── face02.jpg
│ │ │ │ ├── face03.jpg
│ │ │ │ ├── face04.jpg
│ │ │ │ ├── face05.jpg
│ │ │ │ ├── face06.jpg
│ │ │ │ ├── face07.jpg
│ │ │ │ ├── face08.jpg
│ │ │ │ ├── face09.jpg
│ │ │ │ └── face10.jpg
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── employees-1024.png
│ │ │ │ │ ├── employees-120.png
│ │ │ │ │ ├── employees-180.png
│ │ │ │ │ ├── employees-58.png
│ │ │ │ │ └── employees-80.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── departments.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── departments@2x.png
│ │ │ │ │ └── departments.png
│ │ │ │ └── employees.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── employees@2x.png
│ │ │ │ └── employees.png
│ │ │ ├── Info.plist
│ │ │ ├── Launch Screen.storyboard
│ │ │ ├── Main.storyboard
│ │ │ ├── Sale.swift
│ │ │ └── seed.json
│ │ ├── EmployeeDirectoryTests
│ │ │ ├── DepartmentDetailsViewControllerTests.swift
│ │ │ ├── DepartmentListViewControllerTests.swift
│ │ │ ├── EmployeeDetailViewControllerTests.swift
│ │ │ └── Info.plist
│ │ └── EmployeeDirectory.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ └── xcschemes
│ │ ├── EmployeeDirectoryTests.xcscheme
│ │ └── EmployeeDirectory.xcscheme
│ └── starter
│ └── EmployeeDirectory
│ ├── EmployeeDirectory
│ │ ├── AppDelegate.swift
│ │ ├── Attribution.txt
│ │ ├── CoreDataStack.swift
│ │ ├── DepartmentDetailsViewController.swift
│ │ ├── DepartmentListViewController.swift
│ │ ├── EmployeeDetailViewController.swift
│ │ ├── EmployeeDirectory.swift
│ │ ├── EmployeeDirectory.xcdatamodeld
│ │ │ └── EmployeeDirectory.xcdatamodel
│ │ │ └── contents
│ │ ├── EmployeeListViewController.swift
│ │ ├── EmployeePictureViewController.swift
│ │ ├── Employee.swift
│ │ ├── EmployeeTableViewCell.swift
│ │ ├── faces
│ │ │ ├── face01.jpg
│ │ │ ├── face02.jpg
│ │ │ ├── face03.jpg
│ │ │ ├── face04.jpg
│ │ │ ├── face05.jpg
│ │ │ ├── face06.jpg
│ │ │ ├── face07.jpg
│ │ │ ├── face08.jpg
│ │ │ ├── face09.jpg
│ │ │ └── face10.jpg
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── employees-1024.png
│ │ │ │ ├── employees-120.png
│ │ │ │ ├── employees-180.png
│ │ │ │ ├── employees-58.png
│ │ │ │ └── employees-80.png
│ │ │ ├── Contents.json
│ │ │ ├── departments.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── departments@2x.png
│ │ │ │ └── departments.png
│ │ │ └── employees.imageset
│ │ │ ├── Contents.json
│ │ │ ├── employees@2x.png
│ │ │ └── employees.png
│ │ ├── Info.plist
│ │ ├── Launch Screen.storyboard
│ │ ├── Main.storyboard
│ │ ├── Sale.swift
│ │ └── seed.json
│ ├── EmployeeDirectoryTests
│ │ ├── DepartmentDetailsViewControllerTests.swift
│ │ ├── DepartmentListViewControllerTests.swift
│ │ ├── EmployeeDetailViewControllerTests.swift
│ │ └── Info.plist
│ └── EmployeeDirectory.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ └── xcschemes
│ ├── EmployeeDirectoryTests.xcscheme
│ └── EmployeeDirectory.xcscheme
├── 09-multiple-managed-object-contexts
│ ├── challenge
│ │ └── SurfJournal
│ │ ├── attribution.txt
│ │ ├── SurfJournal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataSeed
│ │ │ │ ├── SurfJournalModel.sqlite
│ │ │ │ ├── SurfJournalModel.sqlite-shm
│ │ │ │ └── SurfJournalModel.sqlite-wal
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-40@2x-1.png
│ │ │ │ │ ├── Icon-40@2x.png
│ │ │ │ │ ├── Icon-40.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-76@2x.png
│ │ │ │ │ ├── Icon-76.png
│ │ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ └── Icon-Small.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── star_filled.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── star_filled.png
│ │ │ │ └── star.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── star.png
│ │ │ ├── Info.plist
│ │ │ ├── JournalEntry+Helper.swift
│ │ │ ├── JournalEntry.swift
│ │ │ ├── JournalEntryViewController.swift
│ │ │ ├── JournalListViewController.swift
│ │ │ ├── SurfEntryTableViewCell.swift
│ │ │ ├── SurfJournal-Bridging-Header.h
│ │ │ ├── SurfJournalDatabase.xcdatamodeld
│ │ │ │ └── SurfJournalDatabase.xcdatamodel
│ │ │ │ └── contents
│ │ │ └── SurfJournalModel.xcdatamodeld
│ │ │ └── SurfJournalModel.xcdatamodel
│ │ │ └── contents
│ │ └── SurfJournal.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ └── xcschemes
│ │ └── SurfJournal.xcscheme
│ ├── final
│ │ └── SurfJournal
│ │ ├── attribution.txt
│ │ ├── SurfJournal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ └── Main.storyboard
│ │ │ ├── CoreDataSeed
│ │ │ │ ├── SurfJournalModel.sqlite
│ │ │ │ ├── SurfJournalModel.sqlite-shm
│ │ │ │ └── SurfJournalModel.sqlite-wal
│ │ │ ├── CoreDataStack.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-40@2x-1.png
│ │ │ │ │ ├── Icon-40@2x.png
│ │ │ │ │ ├── Icon-40.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-76@2x.png
│ │ │ │ │ ├── Icon-76.png
│ │ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ └── Icon-Small.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── star_filled.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── star_filled.png
│ │ │ │ └── star.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── star.png
│ │ │ ├── Info.plist
│ │ │ ├── JournalEntry+Helper.swift
│ │ │ ├── JournalEntry.swift
│ │ │ ├── JournalEntryViewController.swift
│ │ │ ├── JournalListViewController.swift
│ │ │ ├── SurfEntryTableViewCell.swift
│ │ │ ├── SurfJournal-Bridging-Header.h
│ │ │ ├── SurfJournalDatabase.xcdatamodeld
│ │ │ │ └── SurfJournalDatabase.xcdatamodel
│ │ │ │ └── contents
│ │ │ └── SurfJournalModel.xcdatamodeld
│ │ │ └── SurfJournalModel.xcdatamodel
│ │ │ └── contents
│ │ └── SurfJournal.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ └── xcschemes
│ │ └── SurfJournal.xcscheme
│ └── starter
│ └── SurfJournal
│ ├── attribution.txt
│ ├── SurfJournal
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ └── Main.storyboard
│ │ ├── CoreDataSeed
│ │ │ ├── SurfJournalModel.sqlite
│ │ │ ├── SurfJournalModel.sqlite-shm
│ │ │ └── SurfJournalModel.sqlite-wal
│ │ ├── CoreDataStack.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-40@2x-1.png
│ │ │ │ ├── Icon-40@2x.png
│ │ │ │ ├── Icon-40.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-76@2x.png
│ │ │ │ ├── Icon-76.png
│ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ └── Icon-Small.png
│ │ │ ├── Contents.json
│ │ │ ├── star_filled.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── star_filled.png
│ │ │ └── star.imageset
│ │ │ ├── Contents.json
│ │ │ └── star.png
│ │ ├── Info.plist
│ │ ├── JournalEntry+Helper.swift
│ │ ├── JournalEntry.swift
│ │ ├── JournalEntryViewController.swift
│ │ ├── JournalListViewController.swift
│ │ ├── SurfEntryTableViewCell.swift
│ │ ├── SurfJournal-Bridging-Header.h
│ │ ├── SurfJournalDatabase.xcdatamodeld
│ │ │ └── SurfJournalDatabase.xcdatamodel
│ │ │ └── contents
│ │ └── SurfJournalModel.xcdatamodeld
│ │ └── SurfJournalModel.xcdatamodel
│ │ └── contents
│ └── SurfJournal.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ └── xcschemes
│ └── SurfJournal.xcscheme
├── Core_Data_by_Tutorials_v5.0.epub
├── Core_Data_by_Tutorials_v5.0.pdf
└── __MACOSX
├── 01-your-first-core-data-app
│ └── final
│ └── HitList
│ ├── HitList
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ └── rw-logo.imageset
│ │ ├── Base.lproj
│ │ └── HitList.xcdatamodeld
│ │ └── HitList.xcdatamodel
│ └── HitList.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 02-nsmanagedobject-subclasses
│ ├── final
│ │ └── Bow Ties
│ │ ├── Bow Ties
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── bowties
│ │ │ │ │ ├── blue.imageset
│ │ │ │ │ ├── green.imageset
│ │ │ │ │ ├── indigo.imageset
│ │ │ │ │ ├── orange.imageset
│ │ │ │ │ ├── red.imageset
│ │ │ │ │ ├── violet.imageset
│ │ │ │ │ └── yellow.imageset
│ │ │ │ └── rw-logo.imageset
│ │ │ ├── Base.lproj
│ │ │ └── Bow_Ties.xcdatamodeld
│ │ │ └── Bow_Ties.xcdatamodel
│ │ └── Bow Ties.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── starter
│ └── Bow Ties
│ ├── Bow Ties
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ ├── bowties
│ │ │ │ ├── blue.imageset
│ │ │ │ ├── green.imageset
│ │ │ │ ├── indigo.imageset
│ │ │ │ ├── orange.imageset
│ │ │ │ ├── red.imageset
│ │ │ │ ├── violet.imageset
│ │ │ │ └── yellow.imageset
│ │ │ └── rw-logo.imageset
│ │ ├── Base.lproj
│ │ └── Bow_Ties.xcdatamodeld
│ │ └── Bow_Ties.xcdatamodel
│ └── Bow Ties.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 03-the-core-data-stack
│ ├── final
│ │ └── Dog Walk
│ │ ├── Dog Walk
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── rw-logo.imageset
│ │ │ │ └── sampleDog.imageset
│ │ │ ├── Base.lproj
│ │ │ ├── Dog Walk.xcdatamodeld
│ │ │ │ └── Dog Walk.xcdatamodel
│ │ │ └── Dog_Walk.xcdatamodeld
│ │ │ └── Dog_Walk.xcdatamodel
│ │ └── Dog Walk.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── starter
│ └── Dog Walk
│ ├── Dog Walk
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ ├── rw-logo.imageset
│ │ │ └── sampleDog.imageset
│ │ ├── Base.lproj
│ │ └── Dog_Walk.xcdatamodeld
│ │ └── Dog_Walk.xcdatamodel
│ └── Dog Walk.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 04-intermediate-fetching
│ ├── final
│ │ └── Bubble Tea Finder
│ │ ├── Bubble Tea Finder
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ └── rw-logo.imageset
│ │ │ ├── Base.lproj
│ │ │ ├── Bubble_Tea_Finder.xcdatamodeld
│ │ │ │ └── Bubble_Tea_Finder.xcdatamodel
│ │ │ └── NSManagedObject
│ │ └── Bubble Tea Finder.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── starter
│ └── Bubble Tea Finder
│ ├── Bubble Tea Finder
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ └── rw-logo.imageset
│ │ ├── Base.lproj
│ │ ├── Bubble_Tea_Finder.xcdatamodeld
│ │ │ └── Bubble_Tea_Finder.xcdatamodel
│ │ └── NSManagedObject
│ └── Bubble Tea Finder.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 05-nsfetchedresultscontroller
│ ├── final
│ │ └── WorldCup
│ │ ├── WorldCup
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Flags
│ │ │ │ │ ├── algeria-flag.imageset
│ │ │ │ │ ├── argentina-flag.imageset
│ │ │ │ │ ├── australia-flag.imageset
│ │ │ │ │ ├── belgium-flag.imageset
│ │ │ │ │ ├── bosnia-herzegovina-flag.imageset
│ │ │ │ │ ├── brazil-flag.imageset
│ │ │ │ │ ├── cameroon-flag.imageset
│ │ │ │ │ ├── chile-flag.imageset
│ │ │ │ │ ├── colombia-flag.imageset
│ │ │ │ │ ├── costa-rica-flag.imageset
│ │ │ │ │ ├── croatia-flag.imageset
│ │ │ │ │ ├── ecuador-flag.imageset
│ │ │ │ │ ├── england-flag.imageset
│ │ │ │ │ ├── france-flag.imageset
│ │ │ │ │ ├── germany-flag.imageset
│ │ │ │ │ ├── ghana-flag.imageset
│ │ │ │ │ ├── greece-flag.imageset
│ │ │ │ │ ├── honduras-flag.imageset
│ │ │ │ │ ├── iran-flag.imageset
│ │ │ │ │ ├── italy-flag.imageset
│ │ │ │ │ ├── ivory-coast-flag.imageset
│ │ │ │ │ ├── japan-flag.imageset
│ │ │ │ │ ├── korea-flag.imageset
│ │ │ │ │ ├── mexico-flag.imageset
│ │ │ │ │ ├── netherlands-flag.imageset
│ │ │ │ │ ├── nigeria-flag.imageset
│ │ │ │ │ ├── portugal-flag.imageset
│ │ │ │ │ ├── russia-flag.imageset
│ │ │ │ │ ├── spain-flag.imageset
│ │ │ │ │ ├── switzerland-flag.imageset
│ │ │ │ │ ├── uruguay-flag.imageset
│ │ │ │ │ ├── usa-flag.imageset
│ │ │ │ │ └── wenderland-flag.imageset
│ │ │ │ └── rw-logo.imageset
│ │ │ ├── Base.lproj
│ │ │ └── WorldCup.xcdatamodeld
│ │ │ └── WorldCup.xcdatamodel
│ │ └── WorldCup.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── starter
│ └── WorldCup
│ ├── WorldCup
│ │ └── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ └── Flags
│ │ ├── algeria-flag.imageset
│ │ ├── argentina-flag.imageset
│ │ ├── australia-flag.imageset
│ │ ├── belgium-flag.imageset
│ │ ├── brazil-flag.imageset
│ │ ├── cameroon-flag.imageset
│ │ ├── chile-flag.imageset
│ │ ├── colombia-flag.imageset
│ │ ├── costa-rica-flag.imageset
│ │ ├── croatia-flag.imageset
│ │ ├── ecuador-flag.imageset
│ │ ├── england-flag.imageset
│ │ ├── france-flag.imageset
│ │ ├── germany-flag.imageset
│ │ ├── ghana-flag.imageset
│ │ ├── greece-flag.imageset
│ │ ├── honduras-flag.imageset
│ │ ├── iran-flag.imageset
│ │ ├── italy-flag.imageset
│ │ ├── ivory-coast-flag.imageset
│ │ ├── japan-flag.imageset
│ │ ├── korea-flag.imageset
│ │ ├── mexico-flag.imageset
│ │ ├── netherlands-flag.imageset
│ │ ├── nigeria-flag.imageset
│ │ ├── spain-flag.imageset
│ │ ├── switzerland-flag.imageset
│ │ ├── uruguay-flag.imageset
│ │ ├── usa-flag.imageset
│ │ └── wenderland-flag.imageset
│ └── WorldCup.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 06-versioning-and-migration
│ ├── final
│ │ ├── UnCloudNotes
│ │ │ ├── Base.lproj
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ └── LaunchImage.launchimage
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ │ ├── UnCloudNotesDataModel v4.xcdatamodel
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ ├── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ │ └── UnCloudNotesMappingModel_v3_to_v4.xcmappingmodel
│ │ └── UnCloudNotes.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ ├── starter
│ │ ├── UnCloudNotes
│ │ │ ├── Base.lproj
│ │ │ ├── Images.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ └── UnCloudNotesDataModel.xcdatamodeld
│ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ └── UnCloudNotes.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ ├── v2
│ │ ├── UnCloudNotes
│ │ │ ├── Base.lproj
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ └── LaunchImage.launchimage
│ │ │ └── UnCloudNotesDataModel.xcdatamodeld
│ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ └── UnCloudNotes.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ ├── v3
│ │ ├── UnCloudNotes
│ │ │ ├── Base.lproj
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ └── LaunchImage.launchimage
│ │ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ │ └── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ └── UnCloudNotes.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── v4
│ ├── UnCloudNotes
│ │ ├── Base.lproj
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ └── LaunchImage.launchimage
│ │ ├── UnCloudNotesDataModel.xcdatamodeld
│ │ │ ├── UnCloudNotesDataModel v2.xcdatamodel
│ │ │ ├── UnCloudNotesDataModel v3.xcdatamodel
│ │ │ ├── UnCloudNotesDataModel v4.xcdatamodel
│ │ │ └── UnCloudNotesDataModel.xcdatamodel
│ │ ├── UnCloudNotesMappingModel_v2_to_v3.xcmappingmodel
│ │ └── UnCloudNotesMappingModel_v3_to_v4.xcmappingmodel
│ └── UnCloudNotes.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
├── 07-unit-testing
│ ├── challenge
│ │ ├── CampgroundManager
│ │ │ ├── Base.lproj
│ │ │ ├── CampgroundManager.xcdatamodeld
│ │ │ │ └── CampgroundManager.xcdatamodel
│ │ │ └── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ └── LaunchImage.launchimage
│ │ ├── CampgroundManagerTests
│ │ └── CampgroundManager.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ ├── final
│ │ ├── CampgroundManager
│ │ │ ├── Base.lproj
│ │ │ ├── CampgroundManager.xcdatamodeld
│ │ │ │ └── CampgroundManager.xcdatamodel
│ │ │ └── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ └── LaunchImage.launchimage
│ │ ├── CampgroundManagerTests
│ │ └── CampgroundManager.xcodeproj
│ │ └── project.xcworkspace
│ │ └── xcshareddata
│ └── starter
│ ├── CampgroundManager
│ │ ├── Base.lproj
│ │ ├── CampgroundManager.xcdatamodeld
│ │ │ └── CampgroundManager.xcdatamodel
│ │ └── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ └── LaunchImage.launchimage
│ ├── CampgroundManagerTests
│ └── CampgroundManager.xcodeproj
│ └── project.xcworkspace
│ └── xcshareddata
└── 08-measuring-and-boosting-performance
└── starter
└── EmployeeDirectory
└── EmployeeDirectory
├── EmployeeDirectory.xcdatamodeld
│ └── EmployeeDirectory.xcdatamodel
└── Images.xcassets
├── AppIcon.appiconset
└── departments.imageset
709 directories, 895 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论