diff --git a/README.md b/README.md deleted file mode 100644 index 2f1e30e..0000000 --- a/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 🍎 iOS_Study_A -SSUMC 5기 iOS 스터디 A조 - -![umc+logo](https://github.com/SSUMC-5th-iOS/iOS_Study_A/assets/84546438/ae41d05c-6f71-47bc-9944-84230b5d4dd6) - -## 💻 Member -| 김수민 | 김민지 | 박현수 | 신혜림 | -| :---------:|:----------:|:----------:|:----------:| -| 루시 | 미니 | 숲 | 제로 | -| [kimsoomin20221789](https://github.com/kimsoomin20221789) | [kxmmxnzx](https://github.com/kxmmxnzx) | [00yhsp](https://github.com/00yhsp) | [tlsgPFla](https://github.com/tlsgPFla) | - -## 📖 Workbook (프리마스터) -| 주차 | 내용 | 미션 | -| --- | --- | --- | -| 1주차 | `Platform` | 배달의 민족 홈 화면 구현하기(1) | -| 2주차 | `AutoLayout` | 배달의 민족 홈 화면 구현하기(2) | -| 3주차 | `TableView & CollectionView` | 당근마켓 홈 화면 구현하기(1) | -| 4주차 | `ScrollView` | 당근마켓 홈 화면 구현하기(2) | -| 5주차 | `View Transition with Data` | 배달의 민족 장바구니로 데이터 넘기 | -| 6주차 | `Open Source` | 라이브러리 2개 이상 사용해서 뷰 만들기 | -| 7주차 | `Token & Social Login` | 카카오 로그인 구현하기 | -| 8주차 | `DB & DBMS` | 간단한 로그인, 회원가입 화면 만들기 - UserDefaults | -| 9주차 | `Network` | Open API 활용하기 | -| 9주차 | `Instagram Clone Coding` | 인스타그램 클론 코딩하기 | - -## 🌳 branch 규칙 -`닉네임/주차` - - - ex) bibi/week1 - -## 👾 Udemy -- https://www.udemy.com/course/comgongbro_ios_clonecoding/ diff --git a/iOS_Study_A.xcodeproj/project.pbxproj b/iOS_Study_A.xcodeproj/project.pbxproj deleted file mode 100644 index 1f5c336..0000000 --- a/iOS_Study_A.xcodeproj/project.pbxproj +++ /dev/null @@ -1,361 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 954B6B612AC57BE100FDCFAB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954B6B602AC57BE100FDCFAB /* AppDelegate.swift */; }; - 954B6B632AC57BE100FDCFAB /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954B6B622AC57BE100FDCFAB /* SceneDelegate.swift */; }; - 954B6B652AC57BE100FDCFAB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954B6B642AC57BE100FDCFAB /* ViewController.swift */; }; - 954B6B682AC57BE100FDCFAB /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 954B6B662AC57BE100FDCFAB /* Main.storyboard */; }; - 954B6B6A2AC57BE200FDCFAB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 954B6B692AC57BE200FDCFAB /* Assets.xcassets */; }; - 954B6B6D2AC57BE200FDCFAB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 954B6B6B2AC57BE200FDCFAB /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 954B6B5D2AC57BE100FDCFAB /* iOS_Study_A.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOS_Study_A.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 954B6B602AC57BE100FDCFAB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 954B6B622AC57BE100FDCFAB /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - 954B6B642AC57BE100FDCFAB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 954B6B672AC57BE100FDCFAB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 954B6B692AC57BE200FDCFAB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 954B6B6C2AC57BE200FDCFAB /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 954B6B6E2AC57BE200FDCFAB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 954B6B5A2AC57BE100FDCFAB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 954B6B542AC57BE100FDCFAB = { - isa = PBXGroup; - children = ( - 954B6B5F2AC57BE100FDCFAB /* iOS_Study_A */, - 954B6B5E2AC57BE100FDCFAB /* Products */, - ); - sourceTree = ""; - }; - 954B6B5E2AC57BE100FDCFAB /* Products */ = { - isa = PBXGroup; - children = ( - 954B6B5D2AC57BE100FDCFAB /* iOS_Study_A.app */, - ); - name = Products; - sourceTree = ""; - }; - 954B6B5F2AC57BE100FDCFAB /* iOS_Study_A */ = { - isa = PBXGroup; - children = ( - 954B6B602AC57BE100FDCFAB /* AppDelegate.swift */, - 954B6B622AC57BE100FDCFAB /* SceneDelegate.swift */, - 954B6B642AC57BE100FDCFAB /* ViewController.swift */, - 954B6B662AC57BE100FDCFAB /* Main.storyboard */, - 954B6B692AC57BE200FDCFAB /* Assets.xcassets */, - 954B6B6B2AC57BE200FDCFAB /* LaunchScreen.storyboard */, - 954B6B6E2AC57BE200FDCFAB /* Info.plist */, - ); - path = iOS_Study_A; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 954B6B5C2AC57BE100FDCFAB /* iOS_Study_A */ = { - isa = PBXNativeTarget; - buildConfigurationList = 954B6B712AC57BE200FDCFAB /* Build configuration list for PBXNativeTarget "iOS_Study_A" */; - buildPhases = ( - 954B6B592AC57BE100FDCFAB /* Sources */, - 954B6B5A2AC57BE100FDCFAB /* Frameworks */, - 954B6B5B2AC57BE100FDCFAB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = iOS_Study_A; - productName = iOS_Study_A; - productReference = 954B6B5D2AC57BE100FDCFAB /* iOS_Study_A.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 954B6B552AC57BE100FDCFAB /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1430; - LastUpgradeCheck = 1430; - TargetAttributes = { - 954B6B5C2AC57BE100FDCFAB = { - CreatedOnToolsVersion = 14.3.1; - }; - }; - }; - buildConfigurationList = 954B6B582AC57BE100FDCFAB /* Build configuration list for PBXProject "iOS_Study_A" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 954B6B542AC57BE100FDCFAB; - productRefGroup = 954B6B5E2AC57BE100FDCFAB /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 954B6B5C2AC57BE100FDCFAB /* iOS_Study_A */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 954B6B5B2AC57BE100FDCFAB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 954B6B6D2AC57BE200FDCFAB /* LaunchScreen.storyboard in Resources */, - 954B6B6A2AC57BE200FDCFAB /* Assets.xcassets in Resources */, - 954B6B682AC57BE100FDCFAB /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 954B6B592AC57BE100FDCFAB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 954B6B652AC57BE100FDCFAB /* ViewController.swift in Sources */, - 954B6B612AC57BE100FDCFAB /* AppDelegate.swift in Sources */, - 954B6B632AC57BE100FDCFAB /* SceneDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 954B6B662AC57BE100FDCFAB /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 954B6B672AC57BE100FDCFAB /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 954B6B6B2AC57BE200FDCFAB /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 954B6B6C2AC57BE200FDCFAB /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 954B6B6F2AC57BE200FDCFAB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 954B6B702AC57BE200FDCFAB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 954B6B722AC57BE200FDCFAB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = iOS_Study_A/Info.plist; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "jiyoon.iOS-Study-A"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 954B6B732AC57BE200FDCFAB /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = iOS_Study_A/Info.plist; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIMainStoryboardFile = Main; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = "jiyoon.iOS-Study-A"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 954B6B582AC57BE100FDCFAB /* Build configuration list for PBXProject "iOS_Study_A" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 954B6B6F2AC57BE200FDCFAB /* Debug */, - 954B6B702AC57BE200FDCFAB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 954B6B712AC57BE200FDCFAB /* Build configuration list for PBXNativeTarget "iOS_Study_A" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 954B6B722AC57BE200FDCFAB /* Debug */, - 954B6B732AC57BE200FDCFAB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 954B6B552AC57BE100FDCFAB /* Project object */; -} diff --git a/iOS_Study_A.xcodeproj/xcuserdata/jiyoon.xcuserdatad/xcschemes/xcschememanagement.plist b/iOS_Study_A.xcodeproj/xcuserdata/jiyoon.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index d6ece4b..0000000 --- a/iOS_Study_A.xcodeproj/xcuserdata/jiyoon.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - iOS_Study_A.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/iOS_Study_A/AppDelegate.swift b/iOS_Study_A/AppDelegate.swift deleted file mode 100644 index a37563b..0000000 --- a/iOS_Study_A/AppDelegate.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// AppDelegate.swift -// iOS_Study_A -// -// Created by 박지윤 on 2023/09/28. -// - -import UIKit - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - // MARK: UISceneSession Lifecycle - - func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { - // Called when a new scene session is being created. - // Use this method to select a configuration to create the new scene with. - return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) - } - - func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { - // Called when the user discards a scene session. - // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. - // Use this method to release any resources that were specific to the discarded scenes, as they will not return. - } - - -} - diff --git a/iOS_Study_A/Base.lproj/LaunchScreen.storyboard b/iOS_Study_A/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index 865e932..0000000 --- a/iOS_Study_A/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS_Study_A/Base.lproj/Main.storyboard b/iOS_Study_A/Base.lproj/Main.storyboard deleted file mode 100644 index 25a7638..0000000 --- a/iOS_Study_A/Base.lproj/Main.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS_Study_A/Info.plist b/iOS_Study_A/Info.plist deleted file mode 100644 index dd3c9af..0000000 --- a/iOS_Study_A/Info.plist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main - - - - - - diff --git a/iOS_Study_A/SceneDelegate.swift b/iOS_Study_A/SceneDelegate.swift deleted file mode 100644 index aaf78de..0000000 --- a/iOS_Study_A/SceneDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// SceneDelegate.swift -// iOS_Study_A -// -// Created by 박지윤 on 2023/09/28. -// - -import UIKit - -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - guard let _ = (scene as? UIWindowScene) else { return } - } - - func sceneDidDisconnect(_ scene: UIScene) { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). - } - - func sceneDidBecomeActive(_ scene: UIScene) { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - func sceneWillResignActive(_ scene: UIScene) { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - func sceneWillEnterForeground(_ scene: UIScene) { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - func sceneDidEnterBackground(_ scene: UIScene) { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - } - - -} - diff --git a/iOS_Study_A/ViewController.swift b/iOS_Study_A/ViewController.swift deleted file mode 100644 index 0804a27..0000000 --- a/iOS_Study_A/ViewController.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ViewController.swift -// iOS_Study_A -// -// Created by 박지윤 on 2023/09/28. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - -} - diff --git a/week9/.gitignore b/week9/.gitignore new file mode 100644 index 0000000..b911f8e --- /dev/null +++ b/week9/.gitignore @@ -0,0 +1 @@ +*GoogleService-Info* diff --git a/week9/week9.xcodeproj/project.pbxproj b/week9/week9.xcodeproj/project.pbxproj new file mode 100644 index 0000000..24837b2 --- /dev/null +++ b/week9/week9.xcodeproj/project.pbxproj @@ -0,0 +1,431 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + DF81FED62B16F2C0006D8789 /* week9App.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF81FED52B16F2C0006D8789 /* week9App.swift */; }; + DF81FED82B16F2C0006D8789 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF81FED72B16F2C0006D8789 /* ContentView.swift */; }; + DF81FEDA2B16F2C2006D8789 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF81FED92B16F2C2006D8789 /* Assets.xcassets */; }; + DF81FEDD2B16F2C2006D8789 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DF81FEDC2B16F2C2006D8789 /* Preview Assets.xcassets */; }; + DF81FEE72B16F687006D8789 /* FirebaseAppCheck in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEE62B16F687006D8789 /* FirebaseAppCheck */; }; + DF81FEE92B16F687006D8789 /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEE82B16F687006D8789 /* FirebaseAuth */; }; + DF81FEEB2B16F687006D8789 /* FirebaseDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEEA2B16F687006D8789 /* FirebaseDatabase */; }; + DF81FEED2B16F687006D8789 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEEC2B16F687006D8789 /* FirebaseFirestore */; }; + DF81FEEF2B16F687006D8789 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEEE2B16F687006D8789 /* FirebaseFunctions */; }; + DF81FEF12B16F687006D8789 /* FirebaseInAppMessaging-Beta in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEF02B16F687006D8789 /* FirebaseInAppMessaging-Beta */; }; + DF81FEF32B16F687006D8789 /* FirebaseInstallations in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEF22B16F687006D8789 /* FirebaseInstallations */; }; + DF81FEF52B16F687006D8789 /* FirebaseStorage in Frameworks */ = {isa = PBXBuildFile; productRef = DF81FEF42B16F687006D8789 /* FirebaseStorage */; }; + DF81FEF82B16FB7D006D8789 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = DF81FEF72B16FB7D006D8789 /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DF81FED22B16F2C0006D8789 /* week9.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = week9.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DF81FED52B16F2C0006D8789 /* week9App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = week9App.swift; sourceTree = ""; }; + DF81FED72B16F2C0006D8789 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + DF81FED92B16F2C2006D8789 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DF81FEDC2B16F2C2006D8789 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + DF81FEF62B16F784006D8789 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + DF81FEF72B16FB7D006D8789 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DF81FECF2B16F2C0006D8789 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DF81FEEB2B16F687006D8789 /* FirebaseDatabase in Frameworks */, + DF81FEF32B16F687006D8789 /* FirebaseInstallations in Frameworks */, + DF81FEED2B16F687006D8789 /* FirebaseFirestore in Frameworks */, + DF81FEEF2B16F687006D8789 /* FirebaseFunctions in Frameworks */, + DF81FEE72B16F687006D8789 /* FirebaseAppCheck in Frameworks */, + DF81FEF52B16F687006D8789 /* FirebaseStorage in Frameworks */, + DF81FEE92B16F687006D8789 /* FirebaseAuth in Frameworks */, + DF81FEF12B16F687006D8789 /* FirebaseInAppMessaging-Beta in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + DF81FEC92B16F2C0006D8789 = { + isa = PBXGroup; + children = ( + DF81FEF62B16F784006D8789 /* GoogleService-Info.plist */, + DF81FED42B16F2C0006D8789 /* week9 */, + DF81FED32B16F2C0006D8789 /* Products */, + ); + sourceTree = ""; + }; + DF81FED32B16F2C0006D8789 /* Products */ = { + isa = PBXGroup; + children = ( + DF81FED22B16F2C0006D8789 /* week9.app */, + ); + name = Products; + sourceTree = ""; + }; + DF81FED42B16F2C0006D8789 /* week9 */ = { + isa = PBXGroup; + children = ( + DF81FEF72B16FB7D006D8789 /* GoogleService-Info.plist */, + DF81FED52B16F2C0006D8789 /* week9App.swift */, + DF81FED72B16F2C0006D8789 /* ContentView.swift */, + DF81FED92B16F2C2006D8789 /* Assets.xcassets */, + DF81FEDB2B16F2C2006D8789 /* Preview Content */, + ); + path = week9; + sourceTree = ""; + }; + DF81FEDB2B16F2C2006D8789 /* Preview Content */ = { + isa = PBXGroup; + children = ( + DF81FEDC2B16F2C2006D8789 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DF81FED12B16F2C0006D8789 /* week9 */ = { + isa = PBXNativeTarget; + buildConfigurationList = DF81FEE02B16F2C2006D8789 /* Build configuration list for PBXNativeTarget "week9" */; + buildPhases = ( + DF81FECE2B16F2C0006D8789 /* Sources */, + DF81FECF2B16F2C0006D8789 /* Frameworks */, + DF81FED02B16F2C0006D8789 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = week9; + packageProductDependencies = ( + DF81FEE62B16F687006D8789 /* FirebaseAppCheck */, + DF81FEE82B16F687006D8789 /* FirebaseAuth */, + DF81FEEA2B16F687006D8789 /* FirebaseDatabase */, + DF81FEEC2B16F687006D8789 /* FirebaseFirestore */, + DF81FEEE2B16F687006D8789 /* FirebaseFunctions */, + DF81FEF02B16F687006D8789 /* FirebaseInAppMessaging-Beta */, + DF81FEF22B16F687006D8789 /* FirebaseInstallations */, + DF81FEF42B16F687006D8789 /* FirebaseStorage */, + ); + productName = week9; + productReference = DF81FED22B16F2C0006D8789 /* week9.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DF81FECA2B16F2C0006D8789 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + DF81FED12B16F2C0006D8789 = { + CreatedOnToolsVersion = 14.3.1; + }; + }; + }; + buildConfigurationList = DF81FECD2B16F2C0006D8789 /* Build configuration list for PBXProject "week9" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DF81FEC92B16F2C0006D8789; + packageReferences = ( + DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + ); + productRefGroup = DF81FED32B16F2C0006D8789 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DF81FED12B16F2C0006D8789 /* week9 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DF81FED02B16F2C0006D8789 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF81FEDD2B16F2C2006D8789 /* Preview Assets.xcassets in Resources */, + DF81FEDA2B16F2C2006D8789 /* Assets.xcassets in Resources */, + DF81FEF82B16FB7D006D8789 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DF81FECE2B16F2C0006D8789 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DF81FED82B16F2C0006D8789 /* ContentView.swift in Sources */, + DF81FED62B16F2C0006D8789 /* week9App.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DF81FEDE2B16F2C2006D8789 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DF81FEDF2B16F2C2006D8789 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DF81FEE12B16F2C2006D8789 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"week9/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.umcstudy.week9; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DF81FEE22B16F2C2006D8789 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"week9/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.umcstudy.week9; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DF81FECD2B16F2C0006D8789 /* Build configuration list for PBXProject "week9" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF81FEDE2B16F2C2006D8789 /* Debug */, + DF81FEDF2B16F2C2006D8789 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DF81FEE02B16F2C2006D8789 /* Build configuration list for PBXNativeTarget "week9" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DF81FEE12B16F2C2006D8789 /* Debug */, + DF81FEE22B16F2C2006D8789 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 10.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DF81FEE62B16F687006D8789 /* FirebaseAppCheck */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAppCheck; + }; + DF81FEE82B16F687006D8789 /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAuth; + }; + DF81FEEA2B16F687006D8789 /* FirebaseDatabase */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseDatabase; + }; + DF81FEEC2B16F687006D8789 /* FirebaseFirestore */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseFirestore; + }; + DF81FEEE2B16F687006D8789 /* FirebaseFunctions */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseFunctions; + }; + DF81FEF02B16F687006D8789 /* FirebaseInAppMessaging-Beta */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = "FirebaseInAppMessaging-Beta"; + }; + DF81FEF22B16F687006D8789 /* FirebaseInstallations */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseInstallations; + }; + DF81FEF42B16F687006D8789 /* FirebaseStorage */ = { + isa = XCSwiftPackageProductDependency; + package = DF81FEE52B16F687006D8789 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseStorage; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = DF81FECA2B16F2C0006D8789 /* Project object */; +} diff --git a/iOS_Study_A.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/week9/week9.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from iOS_Study_A.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to week9/week9.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/iOS_Study_A.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/week9/week9.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from iOS_Study_A.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to week9/week9.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/week9/week9.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/week9/week9.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..928e8d5 --- /dev/null +++ b/week9/week9.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,122 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bfc0b6f81adc06ce5121eb23f628473638d67c5c", + "version" : "1.2022062300.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "5746b2d35c91c50581590ed97abe4c06b5037274", + "version" : "10.18.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "5de0369ee79ad096c164eb3afeb7921d92a43b58", + "version" : "10.18.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "6b332152355c372ace9966d8ee76ed191f97025e", + "version" : "10.17.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "a732a4b47f59e4f725a2ea10f0c77e93a7131117", + "version" : "9.3.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "bc27fad73504f3d4af235de451f02ee22586ebd3", + "version" : "7.12.1" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "a673bc2937fbe886dd1f99c401b01b6d977a9c98", + "version" : "1.49.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "115f75e43851774934d695449a4836123c3246e1", + "version" : "3.2.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", + "version" : "100.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "9d108e9112aa1d65ce508facf804674546116d9c", + "version" : "1.22.3" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", + "version" : "2.30909.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "e70e889c0196c76d22759eb50d6a0270ca9f1d9e", + "version" : "2.3.1" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "07f7f26ded8df9645c072f220378879c4642e063", + "version" : "1.25.1" + } + } + ], + "version" : 2 +} diff --git a/iOS_Study_A/Assets.xcassets/AccentColor.colorset/Contents.json b/week9/week9/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from iOS_Study_A/Assets.xcassets/AccentColor.colorset/Contents.json rename to week9/week9/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/iOS_Study_A/Assets.xcassets/AppIcon.appiconset/Contents.json b/week9/week9/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from iOS_Study_A/Assets.xcassets/AppIcon.appiconset/Contents.json rename to week9/week9/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/iOS_Study_A/Assets.xcassets/Contents.json b/week9/week9/Assets.xcassets/Contents.json similarity index 100% rename from iOS_Study_A/Assets.xcassets/Contents.json rename to week9/week9/Assets.xcassets/Contents.json diff --git a/week9/week9/ContentView.swift b/week9/week9/ContentView.swift new file mode 100644 index 0000000..a293b1b --- /dev/null +++ b/week9/week9/ContentView.swift @@ -0,0 +1,136 @@ +// +// ContentView.swift +// week9 +// +// Created by 박현수 on 2023/11/29. +// + +import SwiftUI +import FirebaseCore +import Firebase +import FirebaseAuth +import DeviceCheck + + +struct NextView: View { + @Environment(\.dismiss) private var dismiss + + let userEmail: String + + init(userEmail: String) { + self.userEmail = userEmail + } + + + var body: some View { + VStack(spacing: 30){ + + Text("\(userEmail)님 로그인되었습니다!").font(.title).bold() + + Text("로그아웃").onTapGesture { + try? Auth.auth().signOut() + let defaults = UserDefaults.standard + defaults.set(false, forKey: "isAutoLogin") + + dismiss() + } + + } + } +} + +struct ContentView: View { + @State private var status = "Welcome" + @State private var userEmail = "" + @State private var password = "" + @State var isPresented = false + + func autoLogin() { + let defaults = UserDefaults.standard + if let isAutoLogin = defaults.object(forKey: "isAutoLogin") as? Bool, isAutoLogin { + if let savedEmail = defaults.string(forKey: "savedEmail"), + let savedPassword = defaults.string(forKey: "savedPassword") { + Auth.auth().signIn(withEmail: savedEmail, password: savedPassword) { _, error in + if let error = error { + status = "Auto login failed: \(error.localizedDescription)" + } else { + userEmail = savedEmail + isPresented.toggle() + } + } + } + } + } + + var body: some View { + + VStack { + VStack(spacing: 20) { + Text(status).font(.headline) + + TextField("아이디", text: $userEmail) + .padding() + .background(Color.gray.opacity(0.1)) + .cornerRadius(10) + + SecureField("비밀번호", text: $password) + .padding() + .background(Color.gray.opacity(0.1)) + .cornerRadius(10) + + Button(action: { + Auth.auth().signIn(withEmail: userEmail, password: password) { authResult, error in + if let error = error { + status = error.localizedDescription + } + else { + isPresented.toggle() + let defaults = UserDefaults.standard + defaults.set(userEmail, forKey: "savedEmail") + defaults.set(password, forKey: "savedPassword") + defaults.set(true, forKey: "isAutoLogin") + } + } + }) { + Text("로그인") + .foregroundColor(.white) + .frame(maxWidth: .infinity) + .frame(height: 40) + .background(Color.blue) + .cornerRadius(8) + }.fullScreenCover(isPresented: $isPresented) { + NextView(userEmail: userEmail) + } + + Button(action: { + Auth.auth().createUser(withEmail: userEmail, password: password) { authResult, error in + guard let user = authResult?.user, error == nil else { + status = error!.localizedDescription + return + } + status = "\(user.email!) 님 회원가입이 완료되었습니다!" + } + }) { + Text("회원가입") + .foregroundColor(.blue) + } + } + .padding() + .background(Color.white) + .cornerRadius(15) + .shadow(radius: 5) + }.padding() + .onAppear { + let defaults = UserDefaults.standard + if let object = defaults.object(forKey: "isAutoLogin") as? Bool, object{ + autoLogin() + } + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/week9/week9/Preview Content/Preview Assets.xcassets/Contents.json b/week9/week9/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/week9/week9/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/week9/week9/week9App.swift b/week9/week9/week9App.swift new file mode 100644 index 0000000..c32c2fb --- /dev/null +++ b/week9/week9/week9App.swift @@ -0,0 +1,30 @@ +// +// week9App.swift +// week9 +// +// Created by 박현수 on 2023/11/29. +// + +import SwiftUI +import FirebaseCore + +class AppDelegate: NSObject, UIApplicationDelegate { + func application(_ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + FirebaseApp.configure() + + return true + } +} + + +@main +struct week9App: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate + + var body: some Scene { + WindowGroup { + ContentView() + } + } +}