├── .gitignore ├── CoreDataBestPractices.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ └── contents.xcworkspacedata └── xcshareddata │ ├── xcbaselines │ └── 50599DA42551B503005AF34B.xcbaseline │ │ ├── DE3DBE0A-B3B6-4C27-8AC9-086F752F0766.plist │ │ └── Info.plist │ └── xcschemes │ └── Core Data Best Practices.xcscheme ├── CoreDataBestPractices ├── Application │ ├── AppDelegate.swift │ └── SceneDelegate.swift ├── Best Practices │ ├── CoreData+Combine.swift │ ├── Deletions.swift │ ├── DiffableDataSources.swift │ ├── FetchRequests.swift │ ├── FetchedResultsController.swift │ ├── Insertions.swift │ ├── Model Configurations │ │ ├── Constraints.swift │ │ ├── DerivedAttributes.swift │ │ ├── LifeCycleEvents.swift │ │ ├── Transformables.swift │ │ └── Validating.swift │ ├── Persistent History Tracking │ │ ├── PersistentHistoryCleaner.swift │ │ ├── PersistentHistoryFetcher.swift │ │ ├── PersistentHistoryMerger.swift │ │ ├── PersistentHistoryObserver.swift │ │ └── PersistentHistoryTracking.swift │ ├── Saving.swift │ ├── Stack.swift │ ├── StatsFetching.swift │ ├── Testing.swift │ └── Threading.swift ├── Core Data │ ├── DataModel.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── CoreDataBestPractices.xcdatamodel │ │ │ └── contents │ └── Models │ │ ├── Article.swift │ │ └── Category.swift ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json ├── Resources │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ └── SwiftLee Orange.colorset │ │ │ └── Contents.json │ └── Base.lproj │ │ └── LaunchScreen.storyboard ├── Supporting Files │ └── Info.plist └── Views │ ├── Articles List │ ├── ArticleListCell.swift │ └── ArticlesListCollectionViewController.swift │ ├── Category List │ └── CategoriesView.swift │ ├── Create Article │ └── ArticleFormView.swift │ └── StatsView.swift ├── CoreDataBestPracticesTests ├── CoreDataTestCase.swift ├── Info.plist └── StatsFetchingTests.swift ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/.gitignore -------------------------------------------------------------------------------- /CoreDataBestPractices.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /CoreDataBestPractices.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /CoreDataBestPractices.xcodeproj/xcshareddata/xcbaselines/50599DA42551B503005AF34B.xcbaseline/DE3DBE0A-B3B6-4C27-8AC9-086F752F0766.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices.xcodeproj/xcshareddata/xcbaselines/50599DA42551B503005AF34B.xcbaseline/DE3DBE0A-B3B6-4C27-8AC9-086F752F0766.plist -------------------------------------------------------------------------------- /CoreDataBestPractices.xcodeproj/xcshareddata/xcbaselines/50599DA42551B503005AF34B.xcbaseline/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices.xcodeproj/xcshareddata/xcbaselines/50599DA42551B503005AF34B.xcbaseline/Info.plist -------------------------------------------------------------------------------- /CoreDataBestPractices.xcodeproj/xcshareddata/xcschemes/Core Data Best Practices.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices.xcodeproj/xcshareddata/xcschemes/Core Data Best Practices.xcscheme -------------------------------------------------------------------------------- /CoreDataBestPractices/Application/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Application/AppDelegate.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Application/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Application/SceneDelegate.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/CoreData+Combine.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/CoreData+Combine.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Deletions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Deletions.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/DiffableDataSources.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/DiffableDataSources.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/FetchRequests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/FetchRequests.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/FetchedResultsController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/FetchedResultsController.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Insertions.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Insertions.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Model Configurations/Constraints.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Model Configurations/Constraints.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Model Configurations/DerivedAttributes.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Model Configurations/DerivedAttributes.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Model Configurations/LifeCycleEvents.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Model Configurations/LifeCycleEvents.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Model Configurations/Transformables.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Model Configurations/Transformables.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Model Configurations/Validating.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Model Configurations/Validating.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryCleaner.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryCleaner.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryFetcher.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryFetcher.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryMerger.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryMerger.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryObserver.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryObserver.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryTracking.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Persistent History Tracking/PersistentHistoryTracking.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Saving.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Saving.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Stack.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Stack.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/StatsFetching.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/StatsFetching.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Testing.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Testing.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Best Practices/Threading.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Best Practices/Threading.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Core Data/DataModel.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Core Data/DataModel.xcdatamodeld/.xccurrentversion -------------------------------------------------------------------------------- /CoreDataBestPractices/Core Data/DataModel.xcdatamodeld/CoreDataBestPractices.xcdatamodel/contents: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Core Data/DataModel.xcdatamodeld/CoreDataBestPractices.xcdatamodel/contents -------------------------------------------------------------------------------- /CoreDataBestPractices/Core Data/Models/Article.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Core Data/Models/Article.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Core Data/Models/Category.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Core Data/Models/Category.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Preview Content/Preview Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /CoreDataBestPractices/Resources/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Resources/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /CoreDataBestPractices/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /CoreDataBestPractices/Resources/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Resources/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /CoreDataBestPractices/Resources/Assets.xcassets/SwiftLee Orange.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Resources/Assets.xcassets/SwiftLee Orange.colorset/Contents.json -------------------------------------------------------------------------------- /CoreDataBestPractices/Resources/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Resources/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /CoreDataBestPractices/Supporting Files/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Supporting Files/Info.plist -------------------------------------------------------------------------------- /CoreDataBestPractices/Views/Articles List/ArticleListCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Views/Articles List/ArticleListCell.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Views/Articles List/ArticlesListCollectionViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Views/Articles List/ArticlesListCollectionViewController.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Views/Category List/CategoriesView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Views/Category List/CategoriesView.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Views/Create Article/ArticleFormView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Views/Create Article/ArticleFormView.swift -------------------------------------------------------------------------------- /CoreDataBestPractices/Views/StatsView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPractices/Views/StatsView.swift -------------------------------------------------------------------------------- /CoreDataBestPracticesTests/CoreDataTestCase.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPracticesTests/CoreDataTestCase.swift -------------------------------------------------------------------------------- /CoreDataBestPracticesTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPracticesTests/Info.plist -------------------------------------------------------------------------------- /CoreDataBestPracticesTests/StatsFetchingTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/CoreDataBestPracticesTests/StatsFetchingTests.swift -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AvdLee/CoreDataBestPractices/HEAD/README.md --------------------------------------------------------------------------------