├── .gitignore ├── .swiftlint.yml ├── Clean-swift-article.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── Clean-swift-article.xcworkspace └── contents.xcworkspacedata ├── Clean-swift-article ├── AppDelegate.swift ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Base.lproj │ ├── Contact.storyboard │ └── LaunchScreen.storyboard ├── Info.plist ├── Model │ ├── Contact.swift │ ├── ContactDataProtocol.swift │ └── DB Model │ │ ├── DBContact.swift │ │ └── RealmConvertable.swift ├── Scenes │ ├── Add contact scene │ │ ├── AddContactConfigurator.swift │ │ ├── AddContactInteractor.swift │ │ ├── AddContactModels.swift │ │ ├── AddContactPresenter.swift │ │ ├── AddContactRouter.swift │ │ ├── AddContactViewController.swift │ │ └── AddContactWorker.swift │ ├── Contact list scene │ │ ├── ContactListInteractor.swift │ │ ├── ContactListModels.swift │ │ ├── ContactListPresenter.swift │ │ ├── ContactListRouter.swift │ │ ├── ContactListViewController.swift │ │ └── ContactListWorker.swift │ └── Contact view scene │ │ ├── ContactViewInteractor.swift │ │ ├── ContactViewModels.swift │ │ ├── ContactViewPresenter.swift │ │ ├── ContactViewRouter.swift │ │ ├── ContactViewViewController.swift │ │ └── ContactViewWorker.swift ├── Services │ └── DBService.swift └── Utilites │ ├── PhoneFormatter.swift │ └── StringExt.swift ├── Clean-swift-articleTests ├── Clean_swift_articleTests.swift ├── Info.plist ├── Scenes │ └── Contact list scene │ │ ├── ContactListInteractorTests.swift │ │ ├── ContactListPresenterTests.swift │ │ └── ContactsListViewControllerTests.swift └── Test data │ └── TestData.swift ├── Podfile └── README.md /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/.gitignore -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/.swiftlint.yml -------------------------------------------------------------------------------- /Clean-swift-article.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /Clean-swift-article.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Clean-swift-article.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /Clean-swift-article/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/AppDelegate.swift -------------------------------------------------------------------------------- /Clean-swift-article/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /Clean-swift-article/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /Clean-swift-article/Base.lproj/Contact.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Base.lproj/Contact.storyboard -------------------------------------------------------------------------------- /Clean-swift-article/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /Clean-swift-article/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Info.plist -------------------------------------------------------------------------------- /Clean-swift-article/Model/Contact.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Model/Contact.swift -------------------------------------------------------------------------------- /Clean-swift-article/Model/ContactDataProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Model/ContactDataProtocol.swift -------------------------------------------------------------------------------- /Clean-swift-article/Model/DB Model/DBContact.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Model/DB Model/DBContact.swift -------------------------------------------------------------------------------- /Clean-swift-article/Model/DB Model/RealmConvertable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Model/DB Model/RealmConvertable.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactConfigurator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactConfigurator.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactInteractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactInteractor.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactModels.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactModels.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactPresenter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactRouter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactRouter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactViewController.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Add contact scene/AddContactWorker.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Add contact scene/AddContactWorker.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListInteractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListInteractor.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListModels.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListModels.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListPresenter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListRouter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListRouter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListViewController.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact list scene/ContactListWorker.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact list scene/ContactListWorker.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewInteractor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewInteractor.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewModels.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewModels.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewPresenter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewPresenter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewRouter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewRouter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewViewController.swift -------------------------------------------------------------------------------- /Clean-swift-article/Scenes/Contact view scene/ContactViewWorker.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Scenes/Contact view scene/ContactViewWorker.swift -------------------------------------------------------------------------------- /Clean-swift-article/Services/DBService.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Services/DBService.swift -------------------------------------------------------------------------------- /Clean-swift-article/Utilites/PhoneFormatter.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Utilites/PhoneFormatter.swift -------------------------------------------------------------------------------- /Clean-swift-article/Utilites/StringExt.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-article/Utilites/StringExt.swift -------------------------------------------------------------------------------- /Clean-swift-articleTests/Clean_swift_articleTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Clean_swift_articleTests.swift -------------------------------------------------------------------------------- /Clean-swift-articleTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Info.plist -------------------------------------------------------------------------------- /Clean-swift-articleTests/Scenes/Contact list scene/ContactListInteractorTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Scenes/Contact list scene/ContactListInteractorTests.swift -------------------------------------------------------------------------------- /Clean-swift-articleTests/Scenes/Contact list scene/ContactListPresenterTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Scenes/Contact list scene/ContactListPresenterTests.swift -------------------------------------------------------------------------------- /Clean-swift-articleTests/Scenes/Contact list scene/ContactsListViewControllerTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Scenes/Contact list scene/ContactsListViewControllerTests.swift -------------------------------------------------------------------------------- /Clean-swift-articleTests/Test data/TestData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Clean-swift-articleTests/Test data/TestData.swift -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exyte/clean-swift-article/HEAD/Podfile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # clean-swift-article --------------------------------------------------------------------------------