From ec7086b729c7ab81aa11b1144ef357f02fafb30a Mon Sep 17 00:00:00 2001 From: nonaninona Date: Mon, 3 Jun 2024 18:04:47 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Feat=20:=208=EC=A3=BC=EC=B0=A8=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../APITest/APITest.xcodeproj/project.pbxproj | 626 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../week08/APITest/APITest/APITestApp.swift | 17 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../APITest/Assets.xcassets/Contents.json | 6 + .../week08/APITest/APITest/ContentView.swift | 48 ++ 06_hyunhee/week08/APITest/APITest/MyAPI.swift | 63 ++ .../Preview Assets.xcassets/Contents.json | 6 + .../APITest/APITestTests/APITestTests.swift | 36 + .../APITestUITests/APITestUITests.swift | 41 ++ .../APITestUITestsLaunchTests.swift | 32 + 13 files changed, 914 insertions(+) create mode 100644 06_hyunhee/week08/APITest/APITest.xcodeproj/project.pbxproj create mode 100644 06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 06_hyunhee/week08/APITest/APITest/APITestApp.swift create mode 100644 06_hyunhee/week08/APITest/APITest/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 06_hyunhee/week08/APITest/APITest/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 06_hyunhee/week08/APITest/APITest/Assets.xcassets/Contents.json create mode 100644 06_hyunhee/week08/APITest/APITest/ContentView.swift create mode 100644 06_hyunhee/week08/APITest/APITest/MyAPI.swift create mode 100644 06_hyunhee/week08/APITest/APITest/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 06_hyunhee/week08/APITest/APITestTests/APITestTests.swift create mode 100644 06_hyunhee/week08/APITest/APITestUITests/APITestUITests.swift create mode 100644 06_hyunhee/week08/APITest/APITestUITests/APITestUITestsLaunchTests.swift diff --git a/06_hyunhee/week08/APITest/APITest.xcodeproj/project.pbxproj b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a4d050c --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.pbxproj @@ -0,0 +1,626 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 4EE3F8352C003FD10085B7AC /* APITestApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F8342C003FD10085B7AC /* APITestApp.swift */; }; + 4EE3F8372C003FD10085B7AC /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F8362C003FD10085B7AC /* ContentView.swift */; }; + 4EE3F8392C003FD20085B7AC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4EE3F8382C003FD20085B7AC /* Assets.xcassets */; }; + 4EE3F83C2C003FD20085B7AC /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4EE3F83B2C003FD20085B7AC /* Preview Assets.xcassets */; }; + 4EE3F8462C003FD30085B7AC /* APITestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F8452C003FD30085B7AC /* APITestTests.swift */; }; + 4EE3F8502C003FD30085B7AC /* APITestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F84F2C003FD30085B7AC /* APITestUITests.swift */; }; + 4EE3F8522C003FD30085B7AC /* APITestUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F8512C003FD30085B7AC /* APITestUITestsLaunchTests.swift */; }; + 4EE3F85F2C0040200085B7AC /* MyAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE3F85E2C0040200085B7AC /* MyAPI.swift */; }; + 4EE3F8622C0043970085B7AC /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 4EE3F8612C0043970085B7AC /* Alamofire */; }; + 4EE3F8642C0043970085B7AC /* AlamofireDynamic in Frameworks */ = {isa = PBXBuildFile; productRef = 4EE3F8632C0043970085B7AC /* AlamofireDynamic */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4EE3F8422C003FD30085B7AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4EE3F8292C003FD10085B7AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4EE3F8302C003FD10085B7AC; + remoteInfo = APITest; + }; + 4EE3F84C2C003FD30085B7AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4EE3F8292C003FD10085B7AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4EE3F8302C003FD10085B7AC; + remoteInfo = APITest; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4EE3F8312C003FD10085B7AC /* APITest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = APITest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4EE3F8342C003FD10085B7AC /* APITestApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APITestApp.swift; sourceTree = ""; }; + 4EE3F8362C003FD10085B7AC /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 4EE3F8382C003FD20085B7AC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4EE3F83B2C003FD20085B7AC /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 4EE3F8412C003FD30085B7AC /* APITestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = APITestTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4EE3F8452C003FD30085B7AC /* APITestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APITestTests.swift; sourceTree = ""; }; + 4EE3F84B2C003FD30085B7AC /* APITestUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = APITestUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4EE3F84F2C003FD30085B7AC /* APITestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APITestUITests.swift; sourceTree = ""; }; + 4EE3F8512C003FD30085B7AC /* APITestUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APITestUITestsLaunchTests.swift; sourceTree = ""; }; + 4EE3F85E2C0040200085B7AC /* MyAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyAPI.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4EE3F82E2C003FD10085B7AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE3F8622C0043970085B7AC /* Alamofire in Frameworks */, + 4EE3F8642C0043970085B7AC /* AlamofireDynamic in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F83E2C003FD30085B7AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F8482C003FD30085B7AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4EE3F8282C003FD10085B7AC = { + isa = PBXGroup; + children = ( + 4EE3F8332C003FD10085B7AC /* APITest */, + 4EE3F8442C003FD30085B7AC /* APITestTests */, + 4EE3F84E2C003FD30085B7AC /* APITestUITests */, + 4EE3F8322C003FD10085B7AC /* Products */, + ); + sourceTree = ""; + }; + 4EE3F8322C003FD10085B7AC /* Products */ = { + isa = PBXGroup; + children = ( + 4EE3F8312C003FD10085B7AC /* APITest.app */, + 4EE3F8412C003FD30085B7AC /* APITestTests.xctest */, + 4EE3F84B2C003FD30085B7AC /* APITestUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 4EE3F8332C003FD10085B7AC /* APITest */ = { + isa = PBXGroup; + children = ( + 4EE3F8342C003FD10085B7AC /* APITestApp.swift */, + 4EE3F8362C003FD10085B7AC /* ContentView.swift */, + 4EE3F85E2C0040200085B7AC /* MyAPI.swift */, + 4EE3F8382C003FD20085B7AC /* Assets.xcassets */, + 4EE3F83A2C003FD20085B7AC /* Preview Content */, + ); + path = APITest; + sourceTree = ""; + }; + 4EE3F83A2C003FD20085B7AC /* Preview Content */ = { + isa = PBXGroup; + children = ( + 4EE3F83B2C003FD20085B7AC /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 4EE3F8442C003FD30085B7AC /* APITestTests */ = { + isa = PBXGroup; + children = ( + 4EE3F8452C003FD30085B7AC /* APITestTests.swift */, + ); + path = APITestTests; + sourceTree = ""; + }; + 4EE3F84E2C003FD30085B7AC /* APITestUITests */ = { + isa = PBXGroup; + children = ( + 4EE3F84F2C003FD30085B7AC /* APITestUITests.swift */, + 4EE3F8512C003FD30085B7AC /* APITestUITestsLaunchTests.swift */, + ); + path = APITestUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4EE3F8302C003FD10085B7AC /* APITest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4EE3F8552C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITest" */; + buildPhases = ( + 4EE3F82D2C003FD10085B7AC /* Sources */, + 4EE3F82E2C003FD10085B7AC /* Frameworks */, + 4EE3F82F2C003FD10085B7AC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = APITest; + packageProductDependencies = ( + 4EE3F8612C0043970085B7AC /* Alamofire */, + 4EE3F8632C0043970085B7AC /* AlamofireDynamic */, + ); + productName = APITest; + productReference = 4EE3F8312C003FD10085B7AC /* APITest.app */; + productType = "com.apple.product-type.application"; + }; + 4EE3F8402C003FD30085B7AC /* APITestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4EE3F8582C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITestTests" */; + buildPhases = ( + 4EE3F83D2C003FD30085B7AC /* Sources */, + 4EE3F83E2C003FD30085B7AC /* Frameworks */, + 4EE3F83F2C003FD30085B7AC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4EE3F8432C003FD30085B7AC /* PBXTargetDependency */, + ); + name = APITestTests; + productName = APITestTests; + productReference = 4EE3F8412C003FD30085B7AC /* APITestTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 4EE3F84A2C003FD30085B7AC /* APITestUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4EE3F85B2C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITestUITests" */; + buildPhases = ( + 4EE3F8472C003FD30085B7AC /* Sources */, + 4EE3F8482C003FD30085B7AC /* Frameworks */, + 4EE3F8492C003FD30085B7AC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4EE3F84D2C003FD30085B7AC /* PBXTargetDependency */, + ); + name = APITestUITests; + productName = APITestUITests; + productReference = 4EE3F84B2C003FD30085B7AC /* APITestUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4EE3F8292C003FD10085B7AC /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1530; + LastUpgradeCheck = 1530; + TargetAttributes = { + 4EE3F8302C003FD10085B7AC = { + CreatedOnToolsVersion = 15.3; + }; + 4EE3F8402C003FD30085B7AC = { + CreatedOnToolsVersion = 15.3; + TestTargetID = 4EE3F8302C003FD10085B7AC; + }; + 4EE3F84A2C003FD30085B7AC = { + CreatedOnToolsVersion = 15.3; + TestTargetID = 4EE3F8302C003FD10085B7AC; + }; + }; + }; + buildConfigurationList = 4EE3F82C2C003FD10085B7AC /* Build configuration list for PBXProject "APITest" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 4EE3F8282C003FD10085B7AC; + packageReferences = ( + 4EE3F8602C0043240085B7AC /* XCRemoteSwiftPackageReference "Alamofire" */, + ); + productRefGroup = 4EE3F8322C003FD10085B7AC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4EE3F8302C003FD10085B7AC /* APITest */, + 4EE3F8402C003FD30085B7AC /* APITestTests */, + 4EE3F84A2C003FD30085B7AC /* APITestUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4EE3F82F2C003FD10085B7AC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE3F83C2C003FD20085B7AC /* Preview Assets.xcassets in Resources */, + 4EE3F8392C003FD20085B7AC /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F83F2C003FD30085B7AC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F8492C003FD30085B7AC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4EE3F82D2C003FD10085B7AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE3F8372C003FD10085B7AC /* ContentView.swift in Sources */, + 4EE3F8352C003FD10085B7AC /* APITestApp.swift in Sources */, + 4EE3F85F2C0040200085B7AC /* MyAPI.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F83D2C003FD30085B7AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE3F8462C003FD30085B7AC /* APITestTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4EE3F8472C003FD30085B7AC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE3F8502C003FD30085B7AC /* APITestUITests.swift in Sources */, + 4EE3F8522C003FD30085B7AC /* APITestUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 4EE3F8432C003FD30085B7AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4EE3F8302C003FD10085B7AC /* APITest */; + targetProxy = 4EE3F8422C003FD30085B7AC /* PBXContainerItemProxy */; + }; + 4EE3F84D2C003FD30085B7AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4EE3F8302C003FD10085B7AC /* APITest */; + targetProxy = 4EE3F84C2C003FD30085B7AC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 4EE3F8532C003FD30085B7AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 4EE3F8542C003FD30085B7AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4EE3F8562C003FD30085B7AC /* 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 = "\"APITest/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 = hyunhee.APITest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4EE3F8572C003FD30085B7AC /* 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 = "\"APITest/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 = hyunhee.APITest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 4EE3F8592C003FD30085B7AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.APITestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/APITest.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/APITest"; + }; + name = Debug; + }; + 4EE3F85A2C003FD30085B7AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.APITestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/APITest.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/APITest"; + }; + name = Release; + }; + 4EE3F85C2C003FD30085B7AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.APITestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = APITest; + }; + name = Debug; + }; + 4EE3F85D2C003FD30085B7AC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.APITestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = APITest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4EE3F82C2C003FD10085B7AC /* Build configuration list for PBXProject "APITest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4EE3F8532C003FD30085B7AC /* Debug */, + 4EE3F8542C003FD30085B7AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4EE3F8552C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4EE3F8562C003FD30085B7AC /* Debug */, + 4EE3F8572C003FD30085B7AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4EE3F8582C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4EE3F8592C003FD30085B7AC /* Debug */, + 4EE3F85A2C003FD30085B7AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4EE3F85B2C003FD30085B7AC /* Build configuration list for PBXNativeTarget "APITestUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4EE3F85C2C003FD30085B7AC /* Debug */, + 4EE3F85D2C003FD30085B7AC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 4EE3F8602C0043240085B7AC /* XCRemoteSwiftPackageReference "Alamofire" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/Alamofire"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.9.1; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 4EE3F8612C0043970085B7AC /* Alamofire */ = { + isa = XCSwiftPackageProductDependency; + package = 4EE3F8602C0043240085B7AC /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = Alamofire; + }; + 4EE3F8632C0043970085B7AC /* AlamofireDynamic */ = { + isa = XCSwiftPackageProductDependency; + package = 4EE3F8602C0043240085B7AC /* XCRemoteSwiftPackageReference "Alamofire" */; + productName = AlamofireDynamic; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 4EE3F8292C003FD10085B7AC /* Project object */; +} diff --git a/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/06_hyunhee/week08/APITest/APITest/APITestApp.swift b/06_hyunhee/week08/APITest/APITest/APITestApp.swift new file mode 100644 index 0000000..e5b07f4 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/APITestApp.swift @@ -0,0 +1,17 @@ +// +// APITestApp.swift +// APITest +// +// Created by lee hyunhee on 5/24/24. +// + +import SwiftUI + +@main +struct APITestApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AccentColor.colorset/Contents.json b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AppIcon.appiconset/Contents.json b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week08/APITest/APITest/Assets.xcassets/Contents.json b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week08/APITest/APITest/ContentView.swift b/06_hyunhee/week08/APITest/APITest/ContentView.swift new file mode 100644 index 0000000..3182b67 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/ContentView.swift @@ -0,0 +1,48 @@ +// +// ContentView.swift +// APITest +// +// Created by lee hyunhee on 5/24/24. +// + +import SwiftUI + +struct ContentView: View { + @State var users: [User] = [] + var body: some View { + VStack { + Image(systemName: "globe") + .imageScale(.large) + .foregroundStyle(.tint) + VStack { + ForEach(users, id:\.self.id) { user in + Text(user.name) + } + } + + Button("add user") { + MyAPI().addUser { u in + MyAPI().getUser() { u1 in + users = u1 + } + } + } + Button("delete user") { + MyAPI().deleteUserById(id: 4) { u in + MyAPI().getUser() { u1 in + users = u1 + } + } + } + } + .onAppear { + MyAPI().getUser { u in + users = u + } + } + } +} + +#Preview { + ContentView() +} diff --git a/06_hyunhee/week08/APITest/APITest/MyAPI.swift b/06_hyunhee/week08/APITest/APITest/MyAPI.swift new file mode 100644 index 0000000..30f4c37 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/MyAPI.swift @@ -0,0 +1,63 @@ +// +// MyAPI.swift +// APITest +// +// Created by lee hyunhee on 5/24/24. +// + +import Foundation +import Alamofire + +struct User: Codable { + let id: String + let name: String + let email: String + let age: Int +} + +class MyAPI { + func getUser(completion: @escaping (_ users: [User]) -> Void) { + let url = "https://665006e1ec9b4a4a60306fd2.mockapi.io/User" + + let dataRequest = AF.request(url, method: .get, encoding: JSONEncoding.default) + dataRequest.responseDecodable(of: [User].self) { response in + switch response.result { + case .success(let response): + print("success: \(response)") + completion(response) + case .failure(let error): + print("debug error: \(error)") + } + } + } + + func addUser(completion: @escaping (_ users: User) -> Void) { + let url = "https://665006e1ec9b4a4a60306fd2.mockapi.io/User/" + + let dataRequest = AF.request(url, method: .post, encoding: JSONEncoding.default) + dataRequest.responseDecodable(of: User.self) { response in + switch response.result { + case .success(let response): + print("success: \(response)") + completion(response) + case .failure(let error): + print("debug error: \(error)") + } + } + } + + func deleteUserById(id: Int, completion: @escaping (_ users: User) -> Void) { + let url = "https://665006e1ec9b4a4a60306fd2.mockapi.io/User/\(id)" + + let dataRequest = AF.request(url, method: .delete, encoding: JSONEncoding.default) + dataRequest.responseDecodable(of: User.self) { response in + switch response.result { + case .success(let response): + print("success: \(response)") + completion(response) + case .failure(let error): + print("debug error: \(error)") + } + } + } +} diff --git a/06_hyunhee/week08/APITest/APITest/Preview Content/Preview Assets.xcassets/Contents.json b/06_hyunhee/week08/APITest/APITest/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITest/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week08/APITest/APITestTests/APITestTests.swift b/06_hyunhee/week08/APITest/APITestTests/APITestTests.swift new file mode 100644 index 0000000..df09129 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITestTests/APITestTests.swift @@ -0,0 +1,36 @@ +// +// APITestTests.swift +// APITestTests +// +// Created by lee hyunhee on 5/24/24. +// + +import XCTest +@testable import APITest + +final class APITestTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/06_hyunhee/week08/APITest/APITestUITests/APITestUITests.swift b/06_hyunhee/week08/APITest/APITestUITests/APITestUITests.swift new file mode 100644 index 0000000..42dae66 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITestUITests/APITestUITests.swift @@ -0,0 +1,41 @@ +// +// APITestUITests.swift +// APITestUITests +// +// Created by lee hyunhee on 5/24/24. +// + +import XCTest + +final class APITestUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/06_hyunhee/week08/APITest/APITestUITests/APITestUITestsLaunchTests.swift b/06_hyunhee/week08/APITest/APITestUITests/APITestUITestsLaunchTests.swift new file mode 100644 index 0000000..12919d3 --- /dev/null +++ b/06_hyunhee/week08/APITest/APITestUITests/APITestUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// APITestUITestsLaunchTests.swift +// APITestUITests +// +// Created by lee hyunhee on 5/24/24. +// + +import XCTest + +final class APITestUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} From 24af2aaa71c0ab033e8f1cec4f5328f2f6de29ef Mon Sep 17 00:00:00 2001 From: nonaninona Date: Mon, 3 Jun 2024 19:02:23 +0900 Subject: [PATCH 2/3] =?UTF-8?q?Feat=20:=209=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 658 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 + .../Assets.xcassets/Contents.json | 6 + .../KakaoLoginPractice/ContentView.swift | 34 + .../KakaoLoginPractice/Info.plist | 26 + .../KakaoLoginPracticeApp.swift | 17 + .../Preview Assets.xcassets/Contents.json | 6 + .../KakaoLoginPractice/kakaoLogin.swift | 48 ++ .../KakaoLoginPracticeTests.swift | 36 + .../KakaoLoginPracticeUITests/File.swift | 8 + .../KakaoLoginPracticeUITests.swift | 41 ++ ...KakaoLoginPracticeUITestsLaunchTests.swift | 32 + 15 files changed, 951 insertions(+) create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.pbxproj create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/Contents.json create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Info.plist create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/KakaoLoginPracticeApp.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeTests/KakaoLoginPracticeTests.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/File.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITests.swift create mode 100644 06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITestsLaunchTests.swift diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.pbxproj b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f1f37e2 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.pbxproj @@ -0,0 +1,658 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 4E17B8262C0DBF1600FA5A45 /* KakaoLoginPracticeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E17B8252C0DBF1600FA5A45 /* KakaoLoginPracticeApp.swift */; }; + 4E17B8282C0DBF1600FA5A45 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E17B8272C0DBF1600FA5A45 /* ContentView.swift */; }; + 4E17B82A2C0DBF1800FA5A45 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4E17B8292C0DBF1800FA5A45 /* Assets.xcassets */; }; + 4E17B82D2C0DBF1800FA5A45 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4E17B82C2C0DBF1800FA5A45 /* Preview Assets.xcassets */; }; + 4E17B8372C0DBF1800FA5A45 /* KakaoLoginPracticeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E17B8362C0DBF1800FA5A45 /* KakaoLoginPracticeTests.swift */; }; + 4E17B8412C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E17B8402C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.swift */; }; + 4E17B8432C0DBF1800FA5A45 /* KakaoLoginPracticeUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E17B8422C0DBF1800FA5A45 /* KakaoLoginPracticeUITestsLaunchTests.swift */; }; + 4ED1CAA82C0DC58000391F31 /* kakaoLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED1CAA72C0DC58000391F31 /* kakaoLogin.swift */; }; + 4ED1CAAB2C0DC68200391F31 /* KakaoSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 4ED1CAAA2C0DC68200391F31 /* KakaoSDK */; }; + 4ED1CAAD2C0DC68200391F31 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 4ED1CAAC2C0DC68200391F31 /* KakaoSDKAuth */; }; + 4ED1CAAF2C0DC68200391F31 /* KakaoSDKCert in Frameworks */ = {isa = PBXBuildFile; productRef = 4ED1CAAE2C0DC68200391F31 /* KakaoSDKCert */; }; + 4ED1CAB12C0DC68200391F31 /* KakaoSDKCertCore in Frameworks */ = {isa = PBXBuildFile; productRef = 4ED1CAB02C0DC68200391F31 /* KakaoSDKCertCore */; }; + 4ED1CAB32C0DC68200391F31 /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 4ED1CAB22C0DC68200391F31 /* KakaoSDKCommon */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4E17B8332C0DBF1800FA5A45 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4E17B81A2C0DBF1600FA5A45 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4E17B8212C0DBF1600FA5A45; + remoteInfo = KakaoLoginPractice; + }; + 4E17B83D2C0DBF1800FA5A45 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4E17B81A2C0DBF1600FA5A45 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4E17B8212C0DBF1600FA5A45; + remoteInfo = KakaoLoginPractice; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4E17B8222C0DBF1600FA5A45 /* KakaoLoginPractice.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KakaoLoginPractice.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4E17B8252C0DBF1600FA5A45 /* KakaoLoginPracticeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoLoginPracticeApp.swift; sourceTree = ""; }; + 4E17B8272C0DBF1600FA5A45 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 4E17B8292C0DBF1800FA5A45 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4E17B82C2C0DBF1800FA5A45 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 4E17B8322C0DBF1800FA5A45 /* KakaoLoginPracticeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KakaoLoginPracticeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4E17B8362C0DBF1800FA5A45 /* KakaoLoginPracticeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoLoginPracticeTests.swift; sourceTree = ""; }; + 4E17B83C2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KakaoLoginPracticeUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 4E17B8402C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoLoginPracticeUITests.swift; sourceTree = ""; }; + 4E17B8422C0DBF1800FA5A45 /* KakaoLoginPracticeUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KakaoLoginPracticeUITestsLaunchTests.swift; sourceTree = ""; }; + 4E17B84F2C0DC0AD00FA5A45 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; + 4E17B8502C0DC11A00FA5A45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 4ED1CAA72C0DC58000391F31 /* kakaoLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = kakaoLogin.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4E17B81F2C0DBF1600FA5A45 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4ED1CAB12C0DC68200391F31 /* KakaoSDKCertCore in Frameworks */, + 4ED1CAAF2C0DC68200391F31 /* KakaoSDKCert in Frameworks */, + 4ED1CAAB2C0DC68200391F31 /* KakaoSDK in Frameworks */, + 4ED1CAB32C0DC68200391F31 /* KakaoSDKCommon in Frameworks */, + 4ED1CAAD2C0DC68200391F31 /* KakaoSDKAuth in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B82F2C0DBF1800FA5A45 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B8392C0DBF1800FA5A45 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4E17B8192C0DBF1600FA5A45 = { + isa = PBXGroup; + children = ( + 4E17B84F2C0DC0AD00FA5A45 /* Config.xcconfig */, + 4E17B8242C0DBF1600FA5A45 /* KakaoLoginPractice */, + 4E17B8352C0DBF1800FA5A45 /* KakaoLoginPracticeTests */, + 4E17B83F2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests */, + 4E17B8232C0DBF1600FA5A45 /* Products */, + ); + sourceTree = ""; + }; + 4E17B8232C0DBF1600FA5A45 /* Products */ = { + isa = PBXGroup; + children = ( + 4E17B8222C0DBF1600FA5A45 /* KakaoLoginPractice.app */, + 4E17B8322C0DBF1800FA5A45 /* KakaoLoginPracticeTests.xctest */, + 4E17B83C2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 4E17B8242C0DBF1600FA5A45 /* KakaoLoginPractice */ = { + isa = PBXGroup; + children = ( + 4E17B8502C0DC11A00FA5A45 /* Info.plist */, + 4E17B8252C0DBF1600FA5A45 /* KakaoLoginPracticeApp.swift */, + 4E17B8272C0DBF1600FA5A45 /* ContentView.swift */, + 4E17B8292C0DBF1800FA5A45 /* Assets.xcassets */, + 4E17B82B2C0DBF1800FA5A45 /* Preview Content */, + 4ED1CAA72C0DC58000391F31 /* kakaoLogin.swift */, + ); + path = KakaoLoginPractice; + sourceTree = ""; + }; + 4E17B82B2C0DBF1800FA5A45 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 4E17B82C2C0DBF1800FA5A45 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 4E17B8352C0DBF1800FA5A45 /* KakaoLoginPracticeTests */ = { + isa = PBXGroup; + children = ( + 4E17B8362C0DBF1800FA5A45 /* KakaoLoginPracticeTests.swift */, + ); + path = KakaoLoginPracticeTests; + sourceTree = ""; + }; + 4E17B83F2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests */ = { + isa = PBXGroup; + children = ( + 4E17B8402C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.swift */, + 4E17B8422C0DBF1800FA5A45 /* KakaoLoginPracticeUITestsLaunchTests.swift */, + ); + path = KakaoLoginPracticeUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4E17B8212C0DBF1600FA5A45 /* KakaoLoginPractice */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4E17B8462C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPractice" */; + buildPhases = ( + 4E17B81E2C0DBF1600FA5A45 /* Sources */, + 4E17B81F2C0DBF1600FA5A45 /* Frameworks */, + 4E17B8202C0DBF1600FA5A45 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = KakaoLoginPractice; + packageProductDependencies = ( + 4ED1CAAA2C0DC68200391F31 /* KakaoSDK */, + 4ED1CAAC2C0DC68200391F31 /* KakaoSDKAuth */, + 4ED1CAAE2C0DC68200391F31 /* KakaoSDKCert */, + 4ED1CAB02C0DC68200391F31 /* KakaoSDKCertCore */, + 4ED1CAB22C0DC68200391F31 /* KakaoSDKCommon */, + ); + productName = KakaoLoginPractice; + productReference = 4E17B8222C0DBF1600FA5A45 /* KakaoLoginPractice.app */; + productType = "com.apple.product-type.application"; + }; + 4E17B8312C0DBF1800FA5A45 /* KakaoLoginPracticeTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4E17B8492C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPracticeTests" */; + buildPhases = ( + 4E17B82E2C0DBF1800FA5A45 /* Sources */, + 4E17B82F2C0DBF1800FA5A45 /* Frameworks */, + 4E17B8302C0DBF1800FA5A45 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4E17B8342C0DBF1800FA5A45 /* PBXTargetDependency */, + ); + name = KakaoLoginPracticeTests; + productName = KakaoLoginPracticeTests; + productReference = 4E17B8322C0DBF1800FA5A45 /* KakaoLoginPracticeTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 4E17B83B2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4E17B84C2C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPracticeUITests" */; + buildPhases = ( + 4E17B8382C0DBF1800FA5A45 /* Sources */, + 4E17B8392C0DBF1800FA5A45 /* Frameworks */, + 4E17B83A2C0DBF1800FA5A45 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 4E17B83E2C0DBF1800FA5A45 /* PBXTargetDependency */, + ); + name = KakaoLoginPracticeUITests; + productName = KakaoLoginPracticeUITests; + productReference = 4E17B83C2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4E17B81A2C0DBF1600FA5A45 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1530; + LastUpgradeCheck = 1530; + TargetAttributes = { + 4E17B8212C0DBF1600FA5A45 = { + CreatedOnToolsVersion = 15.3; + }; + 4E17B8312C0DBF1800FA5A45 = { + CreatedOnToolsVersion = 15.3; + TestTargetID = 4E17B8212C0DBF1600FA5A45; + }; + 4E17B83B2C0DBF1800FA5A45 = { + CreatedOnToolsVersion = 15.3; + TestTargetID = 4E17B8212C0DBF1600FA5A45; + }; + }; + }; + buildConfigurationList = 4E17B81D2C0DBF1600FA5A45 /* Build configuration list for PBXProject "KakaoLoginPractice" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 4E17B8192C0DBF1600FA5A45; + packageReferences = ( + 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, + ); + productRefGroup = 4E17B8232C0DBF1600FA5A45 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4E17B8212C0DBF1600FA5A45 /* KakaoLoginPractice */, + 4E17B8312C0DBF1800FA5A45 /* KakaoLoginPracticeTests */, + 4E17B83B2C0DBF1800FA5A45 /* KakaoLoginPracticeUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4E17B8202C0DBF1600FA5A45 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E17B82D2C0DBF1800FA5A45 /* Preview Assets.xcassets in Resources */, + 4E17B82A2C0DBF1800FA5A45 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B8302C0DBF1800FA5A45 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B83A2C0DBF1800FA5A45 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4E17B81E2C0DBF1600FA5A45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E17B8282C0DBF1600FA5A45 /* ContentView.swift in Sources */, + 4ED1CAA82C0DC58000391F31 /* kakaoLogin.swift in Sources */, + 4E17B8262C0DBF1600FA5A45 /* KakaoLoginPracticeApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B82E2C0DBF1800FA5A45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E17B8372C0DBF1800FA5A45 /* KakaoLoginPracticeTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4E17B8382C0DBF1800FA5A45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E17B8412C0DBF1800FA5A45 /* KakaoLoginPracticeUITests.swift in Sources */, + 4E17B8432C0DBF1800FA5A45 /* KakaoLoginPracticeUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 4E17B8342C0DBF1800FA5A45 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4E17B8212C0DBF1600FA5A45 /* KakaoLoginPractice */; + targetProxy = 4E17B8332C0DBF1800FA5A45 /* PBXContainerItemProxy */; + }; + 4E17B83E2C0DBF1800FA5A45 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4E17B8212C0DBF1600FA5A45 /* KakaoLoginPractice */; + targetProxy = 4E17B83D2C0DBF1800FA5A45 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 4E17B8442C0DBF1800FA5A45 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4E17B84F2C0DC0AD00FA5A45 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 4E17B8452C0DBF1800FA5A45 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4E17B84F2C0DC0AD00FA5A45 /* Config.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + 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 = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4E17B8472C0DBF1800FA5A45 /* 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 = "\"KakaoLoginPractice/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KakaoLoginPractice/Info.plist; + 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 = hyunhee.KakaoLoginPractice; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4E17B8482C0DBF1800FA5A45 /* 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 = "\"KakaoLoginPractice/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = KakaoLoginPractice/Info.plist; + 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 = hyunhee.KakaoLoginPractice; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 4E17B84A2C0DBF1800FA5A45 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.KakaoLoginPracticeTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KakaoLoginPractice.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/KakaoLoginPractice"; + }; + name = Debug; + }; + 4E17B84B2C0DBF1800FA5A45 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.KakaoLoginPracticeTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/KakaoLoginPractice.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/KakaoLoginPractice"; + }; + name = Release; + }; + 4E17B84D2C0DBF1800FA5A45 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.KakaoLoginPracticeUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = KakaoLoginPractice; + }; + name = Debug; + }; + 4E17B84E2C0DBF1800FA5A45 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hyunhee.KakaoLoginPracticeUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = KakaoLoginPractice; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4E17B81D2C0DBF1600FA5A45 /* Build configuration list for PBXProject "KakaoLoginPractice" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4E17B8442C0DBF1800FA5A45 /* Debug */, + 4E17B8452C0DBF1800FA5A45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4E17B8462C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPractice" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4E17B8472C0DBF1800FA5A45 /* Debug */, + 4E17B8482C0DBF1800FA5A45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4E17B8492C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPracticeTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4E17B84A2C0DBF1800FA5A45 /* Debug */, + 4E17B84B2C0DBF1800FA5A45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4E17B84C2C0DBF1800FA5A45 /* Build configuration list for PBXNativeTarget "KakaoLoginPracticeUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4E17B84D2C0DBF1800FA5A45 /* Debug */, + 4E17B84E2C0DBF1800FA5A45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; + requirement = { + branch = master; + kind = branch; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 4ED1CAAA2C0DC68200391F31 /* KakaoSDK */ = { + isa = XCSwiftPackageProductDependency; + package = 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDK; + }; + 4ED1CAAC2C0DC68200391F31 /* KakaoSDKAuth */ = { + isa = XCSwiftPackageProductDependency; + package = 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKAuth; + }; + 4ED1CAAE2C0DC68200391F31 /* KakaoSDKCert */ = { + isa = XCSwiftPackageProductDependency; + package = 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKCert; + }; + 4ED1CAB02C0DC68200391F31 /* KakaoSDKCertCore */ = { + isa = XCSwiftPackageProductDependency; + package = 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKCertCore; + }; + 4ED1CAB22C0DC68200391F31 /* KakaoSDKCommon */ = { + isa = XCSwiftPackageProductDependency; + package = 4ED1CAA92C0DC68200391F31 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKCommon; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 4E17B81A2C0DBF1600FA5A45 /* Project object */; +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AccentColor.colorset/Contents.json b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AppIcon.appiconset/Contents.json b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/Contents.json b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift new file mode 100644 index 0000000..93b8a39 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift @@ -0,0 +1,34 @@ +// +// ContentView.swift +// KakaoLoginPractice +// +// Created by lee hyunhee on 6/3/24. +// + +import SwiftUI + + +struct ContentView: View { + var body: some View { + VStack { + Image(systemName: "globe") + .imageScale(.large) + .foregroundStyle(.tint) + Text("\(kakaoLogin().kakaoAppKey)") + Button("login") { + kakaoLogin().login() + } + Button("get user Info") { + kakaoLogin().getUserInfo() + } + } + .padding() + .onAppear { + kakaoLogin().initLogin() + } + } +} + +#Preview { + ContentView() +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Info.plist b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Info.plist new file mode 100644 index 0000000..efb196a --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLSchemes + + kakao98bbe23b6eeab3dcb35ab356c688ddb5 + + + + KAKAO_APP_KEY + $(KAKAO_APP_KEY) + LSApplicationQueriesSchemes + + kakaokompassauth + kakaolink + kakaoplus + kakaotalk + + + diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/KakaoLoginPracticeApp.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/KakaoLoginPracticeApp.swift new file mode 100644 index 0000000..48751f1 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/KakaoLoginPracticeApp.swift @@ -0,0 +1,17 @@ +// +// KakaoLoginPracticeApp.swift +// KakaoLoginPractice +// +// Created by lee hyunhee on 6/3/24. +// + +import SwiftUI + +@main +struct KakaoLoginPracticeApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Preview Content/Preview Assets.xcassets/Contents.json b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift new file mode 100644 index 0000000..eff8547 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift @@ -0,0 +1,48 @@ +// +// 123.swift +// KakaoLoginPractice +// +// Created by lee hyunhee on 6/3/24. +// + +import Foundation +import KakaoSDKCommon +import KakaoSDKAuth +import KakaoSDKUser + +class kakaoLogin { + let kakaoAppKey = Bundle.main.infoDictionary?["KAKAO_APP_KEY"] ?? "" + + func login() { + UserApi.shared.loginWithKakaoAccount {(oauthToken, error) in + if let error = error { + print(error) + } + else { + print("loginWithKakaoAccount() success.") + + //do something + _ = oauthToken + } + } + } + + func getUserInfo() { + UserApi.shared.me() {(user, error) in + if let error = error { + print(error) + } + else { + print("me() success.") + //do something + _ = user + print(user?.kakaoAccount?.profile?.nickname?.description ?? "") + print(user?.kakaoAccount?.profile?.profileImageUrl?.absoluteString ?? "") + } + } + } + + func initLogin() { + KakaoSDK.initSDK(appKey: "\(kakaoAppKey)") + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeTests/KakaoLoginPracticeTests.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeTests/KakaoLoginPracticeTests.swift new file mode 100644 index 0000000..adba215 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeTests/KakaoLoginPracticeTests.swift @@ -0,0 +1,36 @@ +// +// KakaoLoginPracticeTests.swift +// KakaoLoginPracticeTests +// +// Created by lee hyunhee on 6/3/24. +// + +import XCTest +@testable import KakaoLoginPractice + +final class KakaoLoginPracticeTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/File.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/File.swift new file mode 100644 index 0000000..9c76e05 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/File.swift @@ -0,0 +1,8 @@ +// +// File.swift +// KakaoLoginPracticeUITests +// +// Created by lee hyunhee on 6/3/24. +// + +import Foundation diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITests.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITests.swift new file mode 100644 index 0000000..9ac1f8e --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITests.swift @@ -0,0 +1,41 @@ +// +// KakaoLoginPracticeUITests.swift +// KakaoLoginPracticeUITests +// +// Created by lee hyunhee on 6/3/24. +// + +import XCTest + +final class KakaoLoginPracticeUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITestsLaunchTests.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITestsLaunchTests.swift new file mode 100644 index 0000000..5e0f533 --- /dev/null +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPracticeUITests/KakaoLoginPracticeUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// KakaoLoginPracticeUITestsLaunchTests.swift +// KakaoLoginPracticeUITests +// +// Created by lee hyunhee on 6/3/24. +// + +import XCTest + +final class KakaoLoginPracticeUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} From fe7add4d476d7cb97ac562092ef2f102500dba28 Mon Sep 17 00:00:00 2001 From: nonaninona Date: Mon, 3 Jun 2024 19:23:34 +0900 Subject: [PATCH 3/3] =?UTF-8?q?Feat=20:=209=EC=A3=BC=EC=B0=A8=20=EB=AF=B8?= =?UTF-8?q?=EC=85=98=20=EB=B3=B4=EC=B6=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06_hyunhee/week08/APITest/APITest/ContentView.swift | 2 +- .../KakaoLoginPractice/KakaoLoginPractice/ContentView.swift | 2 ++ .../KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/06_hyunhee/week08/APITest/APITest/ContentView.swift b/06_hyunhee/week08/APITest/APITest/ContentView.swift index 3182b67..2d06a50 100644 --- a/06_hyunhee/week08/APITest/APITest/ContentView.swift +++ b/06_hyunhee/week08/APITest/APITest/ContentView.swift @@ -28,7 +28,7 @@ struct ContentView: View { } } Button("delete user") { - MyAPI().deleteUserById(id: 4) { u in + MyAPI().deleteUserById(id: 5) { u in MyAPI().getUser() { u1 in users = u1 } diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift index 93b8a39..f131130 100644 --- a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/ContentView.swift @@ -9,6 +9,7 @@ import SwiftUI struct ContentView: View { + @AppStorage("nickname") var nickname : String = "" var body: some View { VStack { Image(systemName: "globe") @@ -21,6 +22,7 @@ struct ContentView: View { Button("get user Info") { kakaoLogin().getUserInfo() } + Text("\(nickname)") } .padding() .onAppear { diff --git a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift index eff8547..5a2c991 100644 --- a/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift +++ b/06_hyunhee/week09/KakaoLoginPractice/KakaoLoginPractice/kakaoLogin.swift @@ -5,12 +5,14 @@ // Created by lee hyunhee on 6/3/24. // +import SwiftUI import Foundation import KakaoSDKCommon import KakaoSDKAuth import KakaoSDKUser class kakaoLogin { + @AppStorage("nickname") var nickname : String = "" let kakaoAppKey = Bundle.main.infoDictionary?["KAKAO_APP_KEY"] ?? "" func login() { @@ -37,6 +39,7 @@ class kakaoLogin { //do something _ = user print(user?.kakaoAccount?.profile?.nickname?.description ?? "") + self.nickname = user?.kakaoAccount?.profile?.nickname?.description ?? "" print(user?.kakaoAccount?.profile?.profileImageUrl?.absoluteString ?? "") } }