├── nerdeame-ios
├── Assets.xcassets
│ ├── Contents.json
│ ├── Primary.colorset
│ │ └── Contents.json
│ ├── Secondary.colorset
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── SupportingFiles
│ ├── Localizable.strings
│ └── Info.plist
├── Util
│ └── Extension
│ │ ├── UIViewExtension.swift
│ │ ├── UIColorExtension.swift
│ │ ├── UITableViewCellExtension.swift
│ │ ├── UILabelExtension.swift
│ │ ├── UIViewControllerExtension.swift
│ │ ├── StringExtension.swift
│ │ └── UITableViewExtension.swift
├── SceneDelegate.swift
├── AppDelegate.swift
└── UseCases
│ ├── Categories
│ ├── Cell
│ │ ├── CategoryTableViewCell.swift
│ │ └── CategoryTableViewCell.xib
│ ├── CategoriesViewController.xib
│ └── CategoriesViewController.swift
│ ├── Detail
│ ├── DetailViewController.swift
│ └── DetailViewController.xib
│ └── Launch
│ └── Base.lproj
│ └── LaunchScreen.storyboard
├── nerdeame-ios.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcuserdata
│ │ └── braismoure.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── xcuserdata
│ └── braismoure.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
└── project.pbxproj
├── README.md
└── .gitignore
/nerdeame-ios/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/nerdeame-ios/SupportingFiles/Localizable.strings:
--------------------------------------------------------------------------------
1 | /*
2 | Localizable.strings
3 | nerdeame-ios
4 |
5 | Created by Brais Moure on 23/09/2020.
6 |
7 | */
8 |
9 | // Generic
10 | "app.title" = "Nerdéame";
11 |
--------------------------------------------------------------------------------
/nerdeame-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/nerdeame-ios.xcodeproj/project.xcworkspace/xcuserdata/braismoure.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mouredev/nerdeame-ios/HEAD/nerdeame-ios.xcodeproj/project.xcworkspace/xcuserdata/braismoure.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Nerdéame
2 | Este es una proyecto creado en directo desde Twitch, por parte de la comunidad de MoureDev.
3 |
4 | **Puedes seguir los directos desde [aquí](https://twitch.tv/mouredev).**
5 |
6 | Este fichero se irá actualizando con todo el contenido del proyecto.
--------------------------------------------------------------------------------
/nerdeame-ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UIViewExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 08/10/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | extension UIView {
11 |
12 | func round() {
13 | layer.cornerRadius = layer.bounds.height / 2
14 | clipsToBounds = true
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UIColorExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIColorExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIColor {
12 |
13 | static let primary = UIColor(named: "Primary")
14 | static let secondary = UIColor(named: "Secondary")
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UITableViewCellExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITableViewCellExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UITableViewCell {
12 |
13 | // Configuración por defecto de una celda
14 | func configure() {
15 |
16 | selectionStyle = .none
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/nerdeame-ios/Assets.xcassets/Primary.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "0.000",
9 | "green" : "0.000",
10 | "red" : "0.000"
11 | }
12 | },
13 | "idiom" : "universal"
14 | }
15 | ],
16 | "info" : {
17 | "author" : "xcode",
18 | "version" : 1
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/nerdeame-ios/Assets.xcassets/Secondary.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "color" : {
5 | "color-space" : "srgb",
6 | "components" : {
7 | "alpha" : "1.000",
8 | "blue" : "1.000",
9 | "green" : "1.000",
10 | "red" : "1.000"
11 | }
12 | },
13 | "idiom" : "universal"
14 | }
15 | ],
16 | "info" : {
17 | "author" : "xcode",
18 | "version" : 1
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/nerdeame-ios.xcodeproj/xcuserdata/braismoure.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | nerdeame-ios.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UILabelExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UILabelExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UILabel {
12 |
13 | func primary() {
14 | textColor = .secondary
15 | }
16 |
17 | func secondary() {
18 | textColor = .primary
19 | }
20 |
21 | func center() {
22 | textAlignment = .center
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UIViewControllerExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewControllerExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIViewController {
12 |
13 | // Transforma en ViewController en un NavigationViewController
14 | func embeddedInNavigation() -> UINavigationController {
15 | return UINavigationController(rootViewController: self)
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/StringExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 23/09/2020.
6 | //
7 |
8 | import Foundation
9 |
10 | extension String {
11 |
12 | func localize() -> String {
13 | return NSLocalizedString(self, comment: "")
14 | }
15 |
16 | func lowercasedLocalize() -> String {
17 | return localize().lowercased()
18 | }
19 |
20 | func uppercasedLocalize() -> String {
21 | return localize().uppercased()
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/nerdeame-ios/Util/Extension/UITableViewExtension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITableViewExtension.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UITableView {
12 |
13 | // Configuración por defecto de una tabla
14 | func configure(owner: UIViewController) {
15 |
16 | tableFooterView = UIView()
17 | separatorStyle = .none
18 | dataSource = owner as? UITableViewDataSource
19 | self.delegate = owner as? UITableViewDelegate
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/nerdeame-ios/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 23/09/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate {
11 |
12 | var window: UIWindow?
13 |
14 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
15 |
16 | guard let windowScene = (scene as? UIWindowScene) else { return }
17 |
18 | let window = UIWindow(windowScene: windowScene)
19 | window.rootViewController = CategoriesViewController(mode: .category).embeddedInNavigation()
20 | window.makeKeyAndVisible()
21 | self.window = window
22 | }
23 |
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/nerdeame-ios/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 23/09/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | @main
11 | class AppDelegate: UIResponder, UIApplicationDelegate {
12 |
13 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
14 |
15 | return true
16 | }
17 |
18 | // MARK: UISceneSession Lifecycle
19 |
20 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
21 |
22 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
23 | }
24 |
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Categories/Cell/CategoryTableViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CategoryTableViewCell.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | final class CategoryTableViewCell: UITableViewCell {
12 |
13 | // MARK: - Outlets
14 |
15 | @IBOutlet weak var containerView: UIView!
16 | @IBOutlet weak var categoryLabel: UILabel!
17 |
18 | // MARK: - Properties
19 |
20 | static let kCellId = "CategoryTableViewCell"
21 |
22 | // MARK: - Life cycle
23 |
24 | override func awakeFromNib() {
25 | super.awakeFromNib()
26 |
27 | // Setup
28 | setup()
29 | }
30 |
31 | // MARK: - Public methods
32 |
33 | func fill(category: String) {
34 |
35 | categoryLabel.text = category
36 | }
37 |
38 | // MARK: - Private methods
39 |
40 | private func setup() {
41 |
42 | configure()
43 | setupUI()
44 | }
45 |
46 | private func setupUI() {
47 |
48 | // Container
49 | containerView.backgroundColor = .primary
50 |
51 | // Label
52 | categoryLabel.primary()
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Detail/DetailViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DetailViewController.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 08/10/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | final class DetailViewController: UIViewController {
11 |
12 | // MARK: - Outlets
13 |
14 | @IBOutlet weak var avatarImageView: UIImageView!
15 | @IBOutlet weak var flagImageView: UIImageView!
16 | @IBOutlet weak var nameLabel: UILabel!
17 |
18 | // MARK: - Properties
19 |
20 | private let creator: String
21 |
22 | // MARK: - Initialization
23 |
24 | init(creator: String) {
25 | self.creator = creator
26 | super.init(nibName: nil, bundle: nil)
27 | }
28 |
29 | required init?(coder: NSCoder) {
30 | fatalError("init(coder:) has not been implemented")
31 | }
32 |
33 | // MARK: - Life cycle
34 |
35 | override func viewDidLoad() {
36 | super.viewDidLoad()
37 |
38 | // Setup
39 | setup()
40 | localize()
41 | }
42 |
43 | // MARK: - Private methods
44 |
45 | private func setup() {
46 |
47 | nameLabel.secondary()
48 | nameLabel.center()
49 | nameLabel.text = creator
50 |
51 | avatarImageView.round()
52 | flagImageView.round()
53 |
54 | avatarImageView.image = UIImage(systemName: "person.circle.fill")
55 | avatarImageView.backgroundColor = .primary
56 |
57 | flagImageView.image = UIImage(systemName: "flag.circle.fill")
58 | flagImageView.backgroundColor = .primary
59 | }
60 |
61 | private func localize() {
62 |
63 | title = "app.title".uppercasedLocalize()
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Launch/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/nerdeame-ios/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/nerdeame-ios/SupportingFiles/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Nerdéame
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UIApplicationSceneManifest
26 |
27 | UIApplicationSupportsMultipleScenes
28 |
29 | UISceneConfigurations
30 |
31 | UIWindowSceneSessionRoleApplication
32 |
33 |
34 | UISceneConfigurationName
35 | Default Configuration
36 | UISceneDelegateClassName
37 | $(PRODUCT_MODULE_NAME).SceneDelegate
38 |
39 |
40 |
41 |
42 | UIApplicationSupportsIndirectInputEvents
43 |
44 | UILaunchStoryboardName
45 | LaunchScreen
46 | UIRequiredDeviceCapabilities
47 |
48 | armv7
49 |
50 | UISupportedInterfaceOrientations
51 |
52 | UIInterfaceOrientationPortrait
53 |
54 | UISupportedInterfaceOrientations~ipad
55 |
56 | UIInterfaceOrientationPortrait
57 | UIInterfaceOrientationPortraitUpsideDown
58 | UIInterfaceOrientationLandscapeLeft
59 | UIInterfaceOrientationLandscapeRight
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Categories/CategoriesViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Created by https://www.toptal.com/developers/gitignore/api/xcode,swift,cocoapods,swiftpackagemanager,swiftpm
3 | # Edit at https://www.toptal.com/developers/gitignore?templates=xcode,swift,cocoapods,swiftpackagemanager,swiftpm
4 |
5 | ### CocoaPods ###
6 | ## CocoaPods GitIgnore Template
7 |
8 | # CocoaPods - Only use to conserve bandwidth / Save time on Pushing
9 | # - Also handy if you have a large number of dependant pods
10 | # - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE
11 | Pods/
12 |
13 | ### Swift ###
14 | # Xcode
15 | #
16 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
17 |
18 | ## User settings
19 | xcuserdata/
20 |
21 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
22 | *.xcscmblueprint
23 | *.xccheckout
24 |
25 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
26 | build/
27 | DerivedData/
28 | *.moved-aside
29 | *.pbxuser
30 | !default.pbxuser
31 | *.mode1v3
32 | !default.mode1v3
33 | *.mode2v3
34 | !default.mode2v3
35 | *.perspectivev3
36 | !default.perspectivev3
37 |
38 | ## Obj-C/Swift specific
39 | *.hmap
40 |
41 | ## App packaging
42 | *.ipa
43 | *.dSYM.zip
44 | *.dSYM
45 |
46 | ## Playgrounds
47 | timeline.xctimeline
48 | playground.xcworkspace
49 |
50 | # Swift Package Manager
51 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
52 | # Packages/
53 | # Package.pins
54 | # Package.resolved
55 | # *.xcodeproj
56 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
57 | # hence it is not needed unless you have added a package configuration file to your project
58 | # .swiftpm
59 |
60 | .build/
61 |
62 | # CocoaPods
63 | # We recommend against adding the Pods directory to your .gitignore. However
64 | # you should judge for yourself, the pros and cons are mentioned at:
65 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
66 | # Pods/
67 | # Add this line if you want to avoid checking in source code from the Xcode workspace
68 | # *.xcworkspace
69 |
70 | # Carthage
71 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
72 | # Carthage/Checkouts
73 |
74 | Carthage/Build/
75 |
76 | # Accio dependency management
77 | Dependencies/
78 | .accio/
79 |
80 | # fastlane
81 | # It is recommended to not store the screenshots in the git repo.
82 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
83 | # For more information about the recommended setup visit:
84 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
85 |
86 | fastlane/report.xml
87 | fastlane/Preview.html
88 | fastlane/screenshots/**/*.png
89 | fastlane/test_output
90 |
91 | # Code Injection
92 | # After new code Injection tools there's a generated folder /iOSInjectionProject
93 | # https://github.com/johnno1962/injectionforxcode
94 |
95 | iOSInjectionProject/
96 |
97 | ### SwiftPackageManager ###
98 | Packages
99 | xcuserdata
100 | *.xcodeproj
101 |
102 |
103 | ### SwiftPM ###
104 |
105 |
106 | ### Xcode ###
107 | # Xcode
108 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
109 |
110 |
111 |
112 |
113 | ## Gcc Patch
114 | /*.gcno
115 |
116 | ### Xcode Patch ###
117 | *.xcodeproj/*
118 | !*.xcodeproj/project.pbxproj
119 | !*.xcodeproj/xcshareddata/
120 | !*.xcworkspace/contents.xcworkspacedata
121 | **/xcshareddata/WorkspaceSettings.xcsettings
122 |
123 | # End of https://www.toptal.com/developers/gitignore/api/xcode,swift,cocoapods,swiftpackagemanager,swiftpm
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Categories/CategoriesViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CategoriesViewController.swift
3 | // nerdeame-ios
4 | //
5 | // Created by Brais Moure on 10/09/2020.
6 | // Copyright © 2020 MoureDev. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | enum CategoriesMode {
12 | case category, subcategory, creator
13 | }
14 |
15 | final class CategoriesViewController: UIViewController {
16 |
17 | // MARK: - Outlets
18 |
19 | @IBOutlet weak var tableView: UITableView!
20 |
21 | // MARK: - Properties
22 |
23 | private let mode: CategoriesMode
24 |
25 | // MARK: - Initialization
26 |
27 | init(mode: CategoriesMode) {
28 | self.mode = mode
29 | super.init(nibName: nil, bundle: nil)
30 | }
31 |
32 | required init?(coder: NSCoder) {
33 | fatalError("init(coder:) has not been implemented")
34 | }
35 |
36 | // MARK: - Life cycle
37 |
38 | override func viewDidLoad() {
39 | super.viewDidLoad()
40 |
41 | // Setup
42 | setup()
43 | localize()
44 | }
45 |
46 | // MARK: - Private methods
47 |
48 | private func setup() {
49 |
50 | setupTable()
51 | }
52 |
53 | private func localize() {
54 |
55 | title = "app.title".uppercasedLocalize()
56 | }
57 |
58 | private func setupTable() {
59 |
60 | tableView.configure(owner: self)
61 |
62 | tableView.contentInset = UIEdgeInsets(top: 8, left: 0, bottom: 8, right: 0)
63 |
64 | switch mode {
65 | case .category:
66 | tableView.rowHeight = UIScreen.main.bounds.height / 5
67 | case .subcategory:
68 | tableView.rowHeight = UIScreen.main.bounds.height / 8
69 | case .creator:
70 | tableView.rowHeight = UIScreen.main.bounds.height / 3
71 | }
72 |
73 | tableView.register(UINib(nibName: CategoryTableViewCell.kCellId, bundle: nil), forCellReuseIdentifier: CategoryTableViewCell.kCellId)
74 | }
75 |
76 | }
77 |
78 | // MARK: - UITableViewDataSource, UITableViewDelegate
79 | extension CategoriesViewController: UITableViewDataSource, UITableViewDelegate {
80 |
81 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
82 |
83 | switch mode {
84 | case .category:
85 | return 10
86 | case .subcategory:
87 | return 20
88 | case .creator:
89 | return 5
90 | }
91 | }
92 |
93 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
94 |
95 | if let cell = tableView.dequeueReusableCell(withIdentifier: CategoryTableViewCell.kCellId, for: indexPath) as? CategoryTableViewCell {
96 |
97 | switch mode {
98 | case .category:
99 | cell.fill(category: "My category \(indexPath.row + 1)")
100 | case .subcategory:
101 | cell.fill(category: "My subcategory \(indexPath.row + 1)")
102 | case .creator:
103 | cell.fill(category: "Creator \(indexPath.row + 1)")
104 | }
105 |
106 | return cell
107 | }
108 |
109 | return UITableViewCell()
110 | }
111 |
112 | func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
113 |
114 | switch mode {
115 | case .category:
116 | navigationController?.pushViewController(CategoriesViewController(mode: .subcategory), animated: true)
117 | case .subcategory:
118 | navigationController?.pushViewController(CategoriesViewController(mode: .creator), animated: true)
119 | case .creator:
120 | navigationController?.pushViewController(DetailViewController(creator: "Creator \(indexPath.row + 1)"), animated: true)
121 | }
122 |
123 | }
124 |
125 | }
126 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Categories/Cell/CategoryTableViewCell.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/nerdeame-ios/UseCases/Detail/DetailViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/nerdeame-ios.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | AC47CB7F252F84B100057B3B /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC47CB7D252F84B100057B3B /* DetailViewController.swift */; };
11 | AC47CB80252F84B100057B3B /* DetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AC47CB7E252F84B100057B3B /* DetailViewController.xib */; };
12 | AC47CB85252F8D7A00057B3B /* UIViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC47CB84252F8D7A00057B3B /* UIViewExtension.swift */; };
13 | AC93B1CD251BC3EA00EA207A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1CC251BC3EA00EA207A /* AppDelegate.swift */; };
14 | AC93B1CF251BC3EA00EA207A /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1CE251BC3EA00EA207A /* SceneDelegate.swift */; };
15 | AC93B1D6251BC3EB00EA207A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AC93B1D5251BC3EB00EA207A /* Assets.xcassets */; };
16 | AC93B1D9251BC3EB00EA207A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AC93B1D7251BC3EB00EA207A /* LaunchScreen.storyboard */; };
17 | AC93B1EF251BC44000EA207A /* CategoriesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = AC93B1E7251BC44000EA207A /* CategoriesViewController.xib */; };
18 | AC93B1F0251BC44000EA207A /* CategoriesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1E8251BC44000EA207A /* CategoriesViewController.swift */; };
19 | AC93B1F1251BC44000EA207A /* CategoryTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1EA251BC44000EA207A /* CategoryTableViewCell.swift */; };
20 | AC93B1F2251BC44000EA207A /* CategoryTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AC93B1EB251BC44000EA207A /* CategoryTableViewCell.xib */; };
21 | AC93B1FC251BC45700EA207A /* UITableViewCellExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1F7251BC45700EA207A /* UITableViewCellExtension.swift */; };
22 | AC93B1FD251BC45700EA207A /* UIColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1F8251BC45700EA207A /* UIColorExtension.swift */; };
23 | AC93B1FE251BC45700EA207A /* UILabelExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1F9251BC45700EA207A /* UILabelExtension.swift */; };
24 | AC93B1FF251BC45700EA207A /* UIViewControllerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1FA251BC45700EA207A /* UIViewControllerExtension.swift */; };
25 | AC93B200251BC45700EA207A /* UITableViewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B1FB251BC45700EA207A /* UITableViewExtension.swift */; };
26 | AC93B209251BCF0000EA207A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = AC93B208251BCF0000EA207A /* Localizable.strings */; };
27 | AC93B20C251BCF8B00EA207A /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC93B20B251BCF8B00EA207A /* StringExtension.swift */; };
28 | /* End PBXBuildFile section */
29 |
30 | /* Begin PBXFileReference section */
31 | AC47CB7D252F84B100057B3B /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; };
32 | AC47CB7E252F84B100057B3B /* DetailViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DetailViewController.xib; sourceTree = ""; };
33 | AC47CB84252F8D7A00057B3B /* UIViewExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtension.swift; sourceTree = ""; };
34 | AC93B1C9251BC3EA00EA207A /* nerdeame-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "nerdeame-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; };
35 | AC93B1CC251BC3EA00EA207A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
36 | AC93B1CE251BC3EA00EA207A /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
37 | AC93B1D5251BC3EB00EA207A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
38 | AC93B1D8251BC3EB00EA207A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
39 | AC93B1DA251BC3EB00EA207A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
40 | AC93B1E7251BC44000EA207A /* CategoriesViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoriesViewController.xib; sourceTree = ""; };
41 | AC93B1E8251BC44000EA207A /* CategoriesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoriesViewController.swift; sourceTree = ""; };
42 | AC93B1EA251BC44000EA207A /* CategoryTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryTableViewCell.swift; sourceTree = ""; };
43 | AC93B1EB251BC44000EA207A /* CategoryTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CategoryTableViewCell.xib; sourceTree = ""; };
44 | AC93B1F7251BC45700EA207A /* UITableViewCellExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableViewCellExtension.swift; sourceTree = ""; };
45 | AC93B1F8251BC45700EA207A /* UIColorExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorExtension.swift; sourceTree = ""; };
46 | AC93B1F9251BC45700EA207A /* UILabelExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UILabelExtension.swift; sourceTree = ""; };
47 | AC93B1FA251BC45700EA207A /* UIViewControllerExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtension.swift; sourceTree = ""; };
48 | AC93B1FB251BC45700EA207A /* UITableViewExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableViewExtension.swift; sourceTree = ""; };
49 | AC93B208251BCF0000EA207A /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; };
50 | AC93B20B251BCF8B00EA207A /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtension.swift; sourceTree = ""; };
51 | /* End PBXFileReference section */
52 |
53 | /* Begin PBXFrameworksBuildPhase section */
54 | AC93B1C6251BC3EA00EA207A /* Frameworks */ = {
55 | isa = PBXFrameworksBuildPhase;
56 | buildActionMask = 2147483647;
57 | files = (
58 | );
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | /* End PBXFrameworksBuildPhase section */
62 |
63 | /* Begin PBXGroup section */
64 | AC47CB7C252F848500057B3B /* Detail */ = {
65 | isa = PBXGroup;
66 | children = (
67 | AC47CB7E252F84B100057B3B /* DetailViewController.xib */,
68 | AC47CB7D252F84B100057B3B /* DetailViewController.swift */,
69 | );
70 | path = Detail;
71 | sourceTree = "";
72 | };
73 | AC93B1C0251BC3EA00EA207A = {
74 | isa = PBXGroup;
75 | children = (
76 | AC93B1CB251BC3EA00EA207A /* nerdeame-ios */,
77 | AC93B1CA251BC3EA00EA207A /* Products */,
78 | );
79 | sourceTree = "";
80 | };
81 | AC93B1CA251BC3EA00EA207A /* Products */ = {
82 | isa = PBXGroup;
83 | children = (
84 | AC93B1C9251BC3EA00EA207A /* nerdeame-ios.app */,
85 | );
86 | name = Products;
87 | sourceTree = "";
88 | };
89 | AC93B1CB251BC3EA00EA207A /* nerdeame-ios */ = {
90 | isa = PBXGroup;
91 | children = (
92 | AC93B1CC251BC3EA00EA207A /* AppDelegate.swift */,
93 | AC93B1CE251BC3EA00EA207A /* SceneDelegate.swift */,
94 | AC93B1E4251BC41B00EA207A /* UseCases */,
95 | AC93B202251BC46000EA207A /* Provider */,
96 | AC93B1F5251BC45700EA207A /* Util */,
97 | AC93B203251BC47800EA207A /* SupportingFiles */,
98 | AC93B1D5251BC3EB00EA207A /* Assets.xcassets */,
99 | );
100 | path = "nerdeame-ios";
101 | sourceTree = "";
102 | };
103 | AC93B1E4251BC41B00EA207A /* UseCases */ = {
104 | isa = PBXGroup;
105 | children = (
106 | AC93B1EC251BC44000EA207A /* Launch */,
107 | AC93B1E6251BC44000EA207A /* Categories */,
108 | AC47CB7C252F848500057B3B /* Detail */,
109 | AC93B1E5251BC44000EA207A /* Common */,
110 | );
111 | path = UseCases;
112 | sourceTree = "";
113 | };
114 | AC93B1E5251BC44000EA207A /* Common */ = {
115 | isa = PBXGroup;
116 | children = (
117 | );
118 | path = Common;
119 | sourceTree = "";
120 | };
121 | AC93B1E6251BC44000EA207A /* Categories */ = {
122 | isa = PBXGroup;
123 | children = (
124 | AC93B1E9251BC44000EA207A /* Cell */,
125 | AC93B1E7251BC44000EA207A /* CategoriesViewController.xib */,
126 | AC93B1E8251BC44000EA207A /* CategoriesViewController.swift */,
127 | );
128 | path = Categories;
129 | sourceTree = "";
130 | };
131 | AC93B1E9251BC44000EA207A /* Cell */ = {
132 | isa = PBXGroup;
133 | children = (
134 | AC93B1EB251BC44000EA207A /* CategoryTableViewCell.xib */,
135 | AC93B1EA251BC44000EA207A /* CategoryTableViewCell.swift */,
136 | );
137 | path = Cell;
138 | sourceTree = "";
139 | };
140 | AC93B1EC251BC44000EA207A /* Launch */ = {
141 | isa = PBXGroup;
142 | children = (
143 | AC93B1D7251BC3EB00EA207A /* LaunchScreen.storyboard */,
144 | );
145 | path = Launch;
146 | sourceTree = "";
147 | };
148 | AC93B1F5251BC45700EA207A /* Util */ = {
149 | isa = PBXGroup;
150 | children = (
151 | AC93B1F6251BC45700EA207A /* Extension */,
152 | );
153 | path = Util;
154 | sourceTree = "";
155 | };
156 | AC93B1F6251BC45700EA207A /* Extension */ = {
157 | isa = PBXGroup;
158 | children = (
159 | AC93B1F7251BC45700EA207A /* UITableViewCellExtension.swift */,
160 | AC93B1F8251BC45700EA207A /* UIColorExtension.swift */,
161 | AC93B1F9251BC45700EA207A /* UILabelExtension.swift */,
162 | AC93B1FA251BC45700EA207A /* UIViewControllerExtension.swift */,
163 | AC93B1FB251BC45700EA207A /* UITableViewExtension.swift */,
164 | AC93B20B251BCF8B00EA207A /* StringExtension.swift */,
165 | AC47CB84252F8D7A00057B3B /* UIViewExtension.swift */,
166 | );
167 | path = Extension;
168 | sourceTree = "";
169 | };
170 | AC93B202251BC46000EA207A /* Provider */ = {
171 | isa = PBXGroup;
172 | children = (
173 | );
174 | path = Provider;
175 | sourceTree = "";
176 | };
177 | AC93B203251BC47800EA207A /* SupportingFiles */ = {
178 | isa = PBXGroup;
179 | children = (
180 | AC93B1DA251BC3EB00EA207A /* Info.plist */,
181 | AC93B208251BCF0000EA207A /* Localizable.strings */,
182 | );
183 | path = SupportingFiles;
184 | sourceTree = "";
185 | };
186 | /* End PBXGroup section */
187 |
188 | /* Begin PBXNativeTarget section */
189 | AC93B1C8251BC3EA00EA207A /* nerdeame-ios */ = {
190 | isa = PBXNativeTarget;
191 | buildConfigurationList = AC93B1DD251BC3EB00EA207A /* Build configuration list for PBXNativeTarget "nerdeame-ios" */;
192 | buildPhases = (
193 | AC93B1C5251BC3EA00EA207A /* Sources */,
194 | AC93B1C6251BC3EA00EA207A /* Frameworks */,
195 | AC93B1C7251BC3EA00EA207A /* Resources */,
196 | );
197 | buildRules = (
198 | );
199 | dependencies = (
200 | );
201 | name = "nerdeame-ios";
202 | productName = "nerdeame-ios";
203 | productReference = AC93B1C9251BC3EA00EA207A /* nerdeame-ios.app */;
204 | productType = "com.apple.product-type.application";
205 | };
206 | /* End PBXNativeTarget section */
207 |
208 | /* Begin PBXProject section */
209 | AC93B1C1251BC3EA00EA207A /* Project object */ = {
210 | isa = PBXProject;
211 | attributes = {
212 | LastSwiftUpdateCheck = 1200;
213 | LastUpgradeCheck = 1200;
214 | TargetAttributes = {
215 | AC93B1C8251BC3EA00EA207A = {
216 | CreatedOnToolsVersion = 12.0;
217 | };
218 | };
219 | };
220 | buildConfigurationList = AC93B1C4251BC3EA00EA207A /* Build configuration list for PBXProject "nerdeame-ios" */;
221 | compatibilityVersion = "Xcode 9.3";
222 | developmentRegion = en;
223 | hasScannedForEncodings = 0;
224 | knownRegions = (
225 | en,
226 | Base,
227 | );
228 | mainGroup = AC93B1C0251BC3EA00EA207A;
229 | productRefGroup = AC93B1CA251BC3EA00EA207A /* Products */;
230 | projectDirPath = "";
231 | projectRoot = "";
232 | targets = (
233 | AC93B1C8251BC3EA00EA207A /* nerdeame-ios */,
234 | );
235 | };
236 | /* End PBXProject section */
237 |
238 | /* Begin PBXResourcesBuildPhase section */
239 | AC93B1C7251BC3EA00EA207A /* Resources */ = {
240 | isa = PBXResourcesBuildPhase;
241 | buildActionMask = 2147483647;
242 | files = (
243 | AC93B209251BCF0000EA207A /* Localizable.strings in Resources */,
244 | AC47CB80252F84B100057B3B /* DetailViewController.xib in Resources */,
245 | AC93B1D9251BC3EB00EA207A /* LaunchScreen.storyboard in Resources */,
246 | AC93B1D6251BC3EB00EA207A /* Assets.xcassets in Resources */,
247 | AC93B1EF251BC44000EA207A /* CategoriesViewController.xib in Resources */,
248 | AC93B1F2251BC44000EA207A /* CategoryTableViewCell.xib in Resources */,
249 | );
250 | runOnlyForDeploymentPostprocessing = 0;
251 | };
252 | /* End PBXResourcesBuildPhase section */
253 |
254 | /* Begin PBXSourcesBuildPhase section */
255 | AC93B1C5251BC3EA00EA207A /* Sources */ = {
256 | isa = PBXSourcesBuildPhase;
257 | buildActionMask = 2147483647;
258 | files = (
259 | AC47CB7F252F84B100057B3B /* DetailViewController.swift in Sources */,
260 | AC93B1CD251BC3EA00EA207A /* AppDelegate.swift in Sources */,
261 | AC93B1CF251BC3EA00EA207A /* SceneDelegate.swift in Sources */,
262 | AC93B20C251BCF8B00EA207A /* StringExtension.swift in Sources */,
263 | AC93B1FC251BC45700EA207A /* UITableViewCellExtension.swift in Sources */,
264 | AC93B1F0251BC44000EA207A /* CategoriesViewController.swift in Sources */,
265 | AC47CB85252F8D7A00057B3B /* UIViewExtension.swift in Sources */,
266 | AC93B1FF251BC45700EA207A /* UIViewControllerExtension.swift in Sources */,
267 | AC93B1FE251BC45700EA207A /* UILabelExtension.swift in Sources */,
268 | AC93B200251BC45700EA207A /* UITableViewExtension.swift in Sources */,
269 | AC93B1F1251BC44000EA207A /* CategoryTableViewCell.swift in Sources */,
270 | AC93B1FD251BC45700EA207A /* UIColorExtension.swift in Sources */,
271 | );
272 | runOnlyForDeploymentPostprocessing = 0;
273 | };
274 | /* End PBXSourcesBuildPhase section */
275 |
276 | /* Begin PBXVariantGroup section */
277 | AC93B1D7251BC3EB00EA207A /* LaunchScreen.storyboard */ = {
278 | isa = PBXVariantGroup;
279 | children = (
280 | AC93B1D8251BC3EB00EA207A /* Base */,
281 | );
282 | name = LaunchScreen.storyboard;
283 | sourceTree = "";
284 | };
285 | /* End PBXVariantGroup section */
286 |
287 | /* Begin XCBuildConfiguration section */
288 | AC93B1DB251BC3EB00EA207A /* Debug */ = {
289 | isa = XCBuildConfiguration;
290 | buildSettings = {
291 | ALWAYS_SEARCH_USER_PATHS = NO;
292 | CLANG_ANALYZER_NONNULL = YES;
293 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
294 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
295 | CLANG_CXX_LIBRARY = "libc++";
296 | CLANG_ENABLE_MODULES = YES;
297 | CLANG_ENABLE_OBJC_ARC = YES;
298 | CLANG_ENABLE_OBJC_WEAK = YES;
299 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
300 | CLANG_WARN_BOOL_CONVERSION = YES;
301 | CLANG_WARN_COMMA = YES;
302 | CLANG_WARN_CONSTANT_CONVERSION = YES;
303 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
304 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
305 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
306 | CLANG_WARN_EMPTY_BODY = YES;
307 | CLANG_WARN_ENUM_CONVERSION = YES;
308 | CLANG_WARN_INFINITE_RECURSION = YES;
309 | CLANG_WARN_INT_CONVERSION = YES;
310 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
311 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
312 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
313 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
314 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
315 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
316 | CLANG_WARN_STRICT_PROTOTYPES = YES;
317 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
318 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
319 | CLANG_WARN_UNREACHABLE_CODE = YES;
320 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
321 | COPY_PHASE_STRIP = NO;
322 | DEBUG_INFORMATION_FORMAT = dwarf;
323 | ENABLE_STRICT_OBJC_MSGSEND = YES;
324 | ENABLE_TESTABILITY = YES;
325 | GCC_C_LANGUAGE_STANDARD = gnu11;
326 | GCC_DYNAMIC_NO_PIC = NO;
327 | GCC_NO_COMMON_BLOCKS = YES;
328 | GCC_OPTIMIZATION_LEVEL = 0;
329 | GCC_PREPROCESSOR_DEFINITIONS = (
330 | "DEBUG=1",
331 | "$(inherited)",
332 | );
333 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
334 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
335 | GCC_WARN_UNDECLARED_SELECTOR = YES;
336 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
337 | GCC_WARN_UNUSED_FUNCTION = YES;
338 | GCC_WARN_UNUSED_VARIABLE = YES;
339 | IPHONEOS_DEPLOYMENT_TARGET = 14.0;
340 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
341 | MTL_FAST_MATH = YES;
342 | ONLY_ACTIVE_ARCH = YES;
343 | SDKROOT = iphoneos;
344 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
345 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
346 | };
347 | name = Debug;
348 | };
349 | AC93B1DC251BC3EB00EA207A /* Release */ = {
350 | isa = XCBuildConfiguration;
351 | buildSettings = {
352 | ALWAYS_SEARCH_USER_PATHS = NO;
353 | CLANG_ANALYZER_NONNULL = YES;
354 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
355 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
356 | CLANG_CXX_LIBRARY = "libc++";
357 | CLANG_ENABLE_MODULES = YES;
358 | CLANG_ENABLE_OBJC_ARC = YES;
359 | CLANG_ENABLE_OBJC_WEAK = YES;
360 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
361 | CLANG_WARN_BOOL_CONVERSION = YES;
362 | CLANG_WARN_COMMA = YES;
363 | CLANG_WARN_CONSTANT_CONVERSION = YES;
364 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
365 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
366 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
367 | CLANG_WARN_EMPTY_BODY = YES;
368 | CLANG_WARN_ENUM_CONVERSION = YES;
369 | CLANG_WARN_INFINITE_RECURSION = YES;
370 | CLANG_WARN_INT_CONVERSION = YES;
371 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
372 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
373 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
374 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
375 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
376 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
377 | CLANG_WARN_STRICT_PROTOTYPES = YES;
378 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
379 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
380 | CLANG_WARN_UNREACHABLE_CODE = YES;
381 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
382 | COPY_PHASE_STRIP = NO;
383 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
384 | ENABLE_NS_ASSERTIONS = NO;
385 | ENABLE_STRICT_OBJC_MSGSEND = YES;
386 | GCC_C_LANGUAGE_STANDARD = gnu11;
387 | GCC_NO_COMMON_BLOCKS = YES;
388 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
389 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
390 | GCC_WARN_UNDECLARED_SELECTOR = YES;
391 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
392 | GCC_WARN_UNUSED_FUNCTION = YES;
393 | GCC_WARN_UNUSED_VARIABLE = YES;
394 | IPHONEOS_DEPLOYMENT_TARGET = 14.0;
395 | MTL_ENABLE_DEBUG_INFO = NO;
396 | MTL_FAST_MATH = YES;
397 | SDKROOT = iphoneos;
398 | SWIFT_COMPILATION_MODE = wholemodule;
399 | SWIFT_OPTIMIZATION_LEVEL = "-O";
400 | VALIDATE_PRODUCT = YES;
401 | };
402 | name = Release;
403 | };
404 | AC93B1DE251BC3EB00EA207A /* Debug */ = {
405 | isa = XCBuildConfiguration;
406 | buildSettings = {
407 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
408 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
409 | CODE_SIGN_STYLE = Automatic;
410 | INFOPLIST_FILE = "nerdeame-ios/SupportingFiles/Info.plist";
411 | LD_RUNPATH_SEARCH_PATHS = (
412 | "$(inherited)",
413 | "@executable_path/Frameworks",
414 | );
415 | PRODUCT_BUNDLE_IDENTIFIER = "com.mouredev.nerdeame-ios";
416 | PRODUCT_NAME = "$(TARGET_NAME)";
417 | SWIFT_VERSION = 5.0;
418 | TARGETED_DEVICE_FAMILY = "1,2";
419 | };
420 | name = Debug;
421 | };
422 | AC93B1DF251BC3EB00EA207A /* Release */ = {
423 | isa = XCBuildConfiguration;
424 | buildSettings = {
425 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
426 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
427 | CODE_SIGN_STYLE = Automatic;
428 | INFOPLIST_FILE = "nerdeame-ios/SupportingFiles/Info.plist";
429 | LD_RUNPATH_SEARCH_PATHS = (
430 | "$(inherited)",
431 | "@executable_path/Frameworks",
432 | );
433 | PRODUCT_BUNDLE_IDENTIFIER = "com.mouredev.nerdeame-ios";
434 | PRODUCT_NAME = "$(TARGET_NAME)";
435 | SWIFT_VERSION = 5.0;
436 | TARGETED_DEVICE_FAMILY = "1,2";
437 | };
438 | name = Release;
439 | };
440 | /* End XCBuildConfiguration section */
441 |
442 | /* Begin XCConfigurationList section */
443 | AC93B1C4251BC3EA00EA207A /* Build configuration list for PBXProject "nerdeame-ios" */ = {
444 | isa = XCConfigurationList;
445 | buildConfigurations = (
446 | AC93B1DB251BC3EB00EA207A /* Debug */,
447 | AC93B1DC251BC3EB00EA207A /* Release */,
448 | );
449 | defaultConfigurationIsVisible = 0;
450 | defaultConfigurationName = Release;
451 | };
452 | AC93B1DD251BC3EB00EA207A /* Build configuration list for PBXNativeTarget "nerdeame-ios" */ = {
453 | isa = XCConfigurationList;
454 | buildConfigurations = (
455 | AC93B1DE251BC3EB00EA207A /* Debug */,
456 | AC93B1DF251BC3EB00EA207A /* Release */,
457 | );
458 | defaultConfigurationIsVisible = 0;
459 | defaultConfigurationName = Release;
460 | };
461 | /* End XCConfigurationList section */
462 | };
463 | rootObject = AC93B1C1251BC3EA00EA207A /* Project object */;
464 | }
465 |
--------------------------------------------------------------------------------