From 8fc7d7be784cf3c57d8cec4dfeb3be0cd35d4eb2 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:31:54 +0900 Subject: [PATCH 1/7] =?UTF-8?q?=ED=83=9C=EC=B4=88=EB=A7=88=EC=9D=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 340 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 10443 bytes .../xcschemes/xcschememanagement.plist | 14 + .../PokemonPhoneBook/AppDelegate.swift | 81 +++++ .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 35 ++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 ++ .../Base.lproj/Main.storyboard | 24 ++ PokemonPhoneBook/PokemonPhoneBook/Info.plist | 25 ++ .../.xccurrentversion | 8 + .../PokemonPhoneBook.xcdatamodel/contents | 4 + .../PokemonPhoneBook/SceneDelegate.swift | 55 +++ .../PokemonPhoneBook/ViewController.swift | 19 + 15 files changed, 654 insertions(+) create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 PokemonPhoneBook/PokemonPhoneBook/AppDelegate.swift create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/Contents.json create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard create mode 100644 PokemonPhoneBook/PokemonPhoneBook/Info.plist create mode 100644 PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/.xccurrentversion create mode 100644 PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/PokemonPhoneBook.xcdatamodel/contents create mode 100644 PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift create mode 100644 PokemonPhoneBook/PokemonPhoneBook/ViewController.swift diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj new file mode 100644 index 0000000..53876c2 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj @@ -0,0 +1,340 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXFileReference section */ + F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PokemonPhoneBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + F909970A2D03099100A92B66 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = F90996F42D03098F00A92B66 /* PokemonPhoneBook */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + F90996F72D03098F00A92B66 /* PokemonPhoneBook */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + F909970A2D03099100A92B66 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */, + ); + path = PokemonPhoneBook; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + F90996F22D03098F00A92B66 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + F90996EC2D03098F00A92B66 = { + isa = PBXGroup; + children = ( + F90996F72D03098F00A92B66 /* PokemonPhoneBook */, + F90996F62D03098F00A92B66 /* Products */, + ); + sourceTree = ""; + }; + F90996F62D03098F00A92B66 /* Products */ = { + isa = PBXGroup; + children = ( + F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + F90996F42D03098F00A92B66 /* PokemonPhoneBook */ = { + isa = PBXNativeTarget; + buildConfigurationList = F909970B2D03099100A92B66 /* Build configuration list for PBXNativeTarget "PokemonPhoneBook" */; + buildPhases = ( + F90996F12D03098F00A92B66 /* Sources */, + F90996F22D03098F00A92B66 /* Frameworks */, + F90996F32D03098F00A92B66 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + F90996F72D03098F00A92B66 /* PokemonPhoneBook */, + ); + name = PokemonPhoneBook; + packageProductDependencies = ( + ); + productName = PokemonPhoneBook; + productReference = F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F90996ED2D03098F00A92B66 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + TargetAttributes = { + F90996F42D03098F00A92B66 = { + CreatedOnToolsVersion = 16.0; + }; + }; + }; + buildConfigurationList = F90996F02D03098F00A92B66 /* Build configuration list for PBXProject "PokemonPhoneBook" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = F90996EC2D03098F00A92B66; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = F90996F62D03098F00A92B66 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + F90996F42D03098F00A92B66 /* PokemonPhoneBook */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + F90996F32D03098F00A92B66 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F90996F12D03098F00A92B66 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + F909970C2D03099100A92B66 /* 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_TEAM = KP2ZL84Y7U; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = PokemonPhoneBook/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 = com.jeongmu.PokemonPhoneBook; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F909970D2D03099100A92B66 /* 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_TEAM = KP2ZL84Y7U; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = PokemonPhoneBook/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 = com.jeongmu.PokemonPhoneBook; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + F909970E2D03099100A92B66 /* 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 = 18.0; + 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; + }; + F909970F2D03099100A92B66 /* 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 = 18.0; + 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; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + F90996F02D03098F00A92B66 /* Build configuration list for PBXProject "PokemonPhoneBook" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F909970E2D03099100A92B66 /* Debug */, + F909970F2D03099100A92B66 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F909970B2D03099100A92B66 /* Build configuration list for PBXNativeTarget "PokemonPhoneBook" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F909970C2D03099100A92B66 /* Debug */, + F909970D2D03099100A92B66 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F90996ED2D03098F00A92B66 /* Project object */; +} diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..879956c7905b11c5a09d26e8067fcf923aa9d7a1 GIT binary patch literal 10443 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 rzsJ7L{%tuKCo1p literal 0 HcmV?d00001 diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcschemes/xcschememanagement.plist b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..dc96333 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + PokemonPhoneBook.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/AppDelegate.swift b/PokemonPhoneBook/PokemonPhoneBook/AppDelegate.swift new file mode 100644 index 0000000..630e775 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/AppDelegate.swift @@ -0,0 +1,81 @@ +// +// AppDelegate.swift +// PokemonPhoneBook +// +// Created by YangJeongMu on 12/6/24. +// + +import UIKit +import CoreData + +@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. + } + + // MARK: - Core Data stack + + lazy var persistentContainer: NSPersistentContainer = { + /* + The persistent container for the application. This implementation + creates and returns a container, having loaded the store for the + application to it. This property is optional since there are legitimate + error conditions that could cause the creation of the store to fail. + */ + let container = NSPersistentContainer(name: "PokemonPhoneBook") + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + return container + }() + + // MARK: - Core Data Saving support + + func saveContext () { + let context = persistentContainer.viewContext + if context.hasChanges { + do { + try context.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nserror = error as NSError + fatalError("Unresolved error \(nserror), \(nserror.userInfo)") + } + } + } + +} + diff --git a/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AccentColor.colorset/Contents.json b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AppIcon.appiconset/Contents.json b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..2305880 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,35 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "tinted" + } + ], + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/Contents.json b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/Info.plist b/PokemonPhoneBook/PokemonPhoneBook/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/.xccurrentversion b/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/.xccurrentversion new file mode 100644 index 0000000..e1b76cc --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + PokemonPhoneBook.xcdatamodel + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/PokemonPhoneBook.xcdatamodel/contents b/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/PokemonPhoneBook.xcdatamodel/contents new file mode 100644 index 0000000..50d2514 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/PokemonPhoneBook.xcdatamodeld/PokemonPhoneBook.xcdatamodel/contents @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift new file mode 100644 index 0000000..f93b6ee --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift @@ -0,0 +1,55 @@ +// +// SceneDelegate.swift +// PokemonPhoneBook +// +// Created by YangJeongMu on 12/6/24. +// + +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. + + // Save changes in the application's managed object context when the application transitions to the background. + (UIApplication.shared.delegate as? AppDelegate)?.saveContext() + } + + +} + diff --git a/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift new file mode 100644 index 0000000..7a1331e --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// PokemonPhoneBook +// +// Created by YangJeongMu on 12/6/24. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + } + + +} + From 803157d37e9d369b0a53aaaf39649bf8c290cc86 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Fri, 6 Dec 2024 19:33:56 +0900 Subject: [PATCH 2/7] Update UserInterfaceState.xcuserstate --- .../UserInterfaceState.xcuserstate | Bin 10443 -> 10443 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate index 879956c7905b11c5a09d26e8067fcf923aa9d7a1..8395e44e85d3af7a4b8c0ead03f195195b33ff9b 100644 GIT binary patch delta 40 scmX>dcsg){GdpXmNAuqEn?2a4@Pe36`!+umdBp)@c6`}dcsg){GdpX`H~x-|n?2a4@B*0ve7`n76nVt~Wb&=m+k8RxHx~eErxDu# From db9bb2b9e0688ff679d1915d119cf8522ef0eb44 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:19:21 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[Lv=201]=20=E2=9C=A8=20=EC=B9=9C=EA=B5=AC?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D,=20=EC=B6=94=EA=B0=80=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20-=20jeongmu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PokemonPhoneBook/.DS_Store | Bin 0 -> 6148 bytes .../project.pbxproj | 30 ++++++++++- .../xcshareddata/swiftpm/Package.resolved | 15 ++++++ .../UserInterfaceState.xcuserstate | Bin 10443 -> 42023 bytes .../Base.lproj/LaunchScreen.storyboard | 19 ++++--- .../Base.lproj/Main.storyboard | 24 --------- PokemonPhoneBook/PokemonPhoneBook/Info.plist | 2 - .../PokemonPhoneBook/SceneDelegate.swift | 11 ++-- .../PokemonPhoneBook/ViewController.swift | 48 ++++++++++++++++-- 9 files changed, 107 insertions(+), 42 deletions(-) create mode 100644 PokemonPhoneBook/.DS_Store create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard diff --git a/PokemonPhoneBook/.DS_Store b/PokemonPhoneBook/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e0aff5457b72acc3d28e8a67e380ce9e2dd829d8 GIT binary patch literal 6148 zcmeHK!Ab)`3{7g0m0k*7#M69%&<_x%%X%031JbToYPYipf)`=IAMrcHvtQr``7#Nm zrFtnMSQ5y*OlFeZc>|jb5pnrgkBEjuR6qrLCm6mFSr^@ro_YE}&N&)Nw4!U816}?D z19ErgxUod{bW5A}x5B)HUsf*YiDs~B_*!~^wOHPbCbQJEddTO~ee*P_s;0{{MSOAm z{`q$K@-f~&SN&_b+WF@BUhzsU&VV!E3>*vtsM#XLK+#8Mz!`7`)(pt^AwUJAVW*fs z9T;*80F>XzEU=}QkeFZ?4Le1wKv+Y88p_sUu!h4QY+p3&6g8aKnh&-ovvnw(pN{+? zZzqn5J~{)=z%~O%Ivq;=zxuiV-wyJbGvEvy6a(C^CRK?eS#8}poYdL?y@86zzD{u+ j0wb4V?3Ge{2F(J05Ca$uJ4JXP{v(iS@WC1QQwF{OYWz$= literal 0 HcmV?d00001 diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj index 53876c2..8c3d864 100644 --- a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj @@ -6,6 +6,10 @@ objectVersion = 77; objects = { +/* Begin PBXBuildFile section */ + F9AD7DAF2D06DA2F00356354 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = F9AD7DAE2D06DA2F00356354 /* SnapKit */; }; +/* End PBXBuildFile section */ + /* Begin PBXFileReference section */ F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PokemonPhoneBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -36,6 +40,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F9AD7DAF2D06DA2F00356354 /* SnapKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -78,6 +83,7 @@ ); name = PokemonPhoneBook; packageProductDependencies = ( + F9AD7DAE2D06DA2F00356354 /* SnapKit */, ); productName = PokemonPhoneBook; productReference = F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */; @@ -107,6 +113,9 @@ ); mainGroup = F90996EC2D03098F00A92B66; minimizedProjectReferenceProxies = 1; + packageReferences = ( + F9AD7DAD2D06DA2F00356354 /* XCRemoteSwiftPackageReference "SnapKit" */, + ); preferredProjectObjectVersion = 77; productRefGroup = F90996F62D03098F00A92B66 /* Products */; projectDirPath = ""; @@ -150,7 +159,6 @@ INFOPLIST_FILE = PokemonPhoneBook/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 = ( @@ -178,7 +186,6 @@ INFOPLIST_FILE = PokemonPhoneBook/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 = ( @@ -335,6 +342,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + F9AD7DAD2D06DA2F00356354 /* XCRemoteSwiftPackageReference "SnapKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SnapKit/SnapKit.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.7.1; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + F9AD7DAE2D06DA2F00356354 /* SnapKit */ = { + isa = XCSwiftPackageProductDependency; + package = F9AD7DAD2D06DA2F00356354 /* XCRemoteSwiftPackageReference "SnapKit" */; + productName = SnapKit; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = F90996ED2D03098F00A92B66 /* Project object */; } diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..3f64b3c --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "dd27728c8848101841bd8d45243ef43144e233aa3767c82656934b73447347b8", + "pins" : [ + { + "identity" : "snapkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SnapKit/SnapKit.git", + "state" : { + "revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4", + "version" : "5.7.1" + } + } + ], + "version" : 3 +} diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate index 8395e44e85d3af7a4b8c0ead03f195195b33ff9b..69cd670ca563ca908de9ad8783936c0870e15f60 100644 GIT binary patch literal 42023 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 O`)|he`F|!8yY(NSxd83} delta 5891 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 diff --git a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard index 865e932..2e490f3 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard +++ b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/LaunchScreen.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -11,15 +13,20 @@ - + - + - + + + + + + diff --git a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard b/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard deleted file mode 100644 index 25a7638..0000000 --- a/PokemonPhoneBook/PokemonPhoneBook/Base.lproj/Main.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PokemonPhoneBook/PokemonPhoneBook/Info.plist b/PokemonPhoneBook/PokemonPhoneBook/Info.plist index dd3c9af..0eb786d 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/Info.plist +++ b/PokemonPhoneBook/PokemonPhoneBook/Info.plist @@ -15,8 +15,6 @@ Default Configuration UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main diff --git a/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift index f93b6ee..da36af9 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift +++ b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift @@ -13,10 +13,13 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { 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 } + + guard let windowScene = (scene as? UIWindowScene) else { return } + + window = UIWindow(windowScene: windowScene) + window?.rootViewController = ViewController() + window?.makeKeyAndVisible() + } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift index 7a1331e..3ac979a 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift +++ b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift @@ -2,18 +2,58 @@ // ViewController.swift // PokemonPhoneBook // -// Created by YangJeongMu on 12/6/24. +// Created by YangJeongMu on 12/9/24. // import UIKit +import SnapKit class ViewController: UIViewController { - + + + // MARK: - UI Componetns + private let titleLabel: UILabel = { + let label = UILabel() + label.text = "친구 목록" + label.font = UIFont.boldSystemFont(ofSize: 24) + label.textAlignment = .center + label.textColor = .black + return label + }() + + private let addButton: UIButton = { + let button = UIButton(type: .system) + button.setTitle("추가", for: .normal) + button.titleLabel?.font = UIFont.systemFont(ofSize: 18) + return button + }() + override func viewDidLoad() { super.viewDidLoad() - // Do any additional setup after loading the view. + setupUI() + + } + // MARK: -Setup UI + private func setupUI() { + view.backgroundColor = .white - + // Add Components + view.addSubview(titleLabel) + view.addSubview(addButton) + + // Layout Using SnapKit + titleLabel.snp.makeConstraints { make in + make.top.equalTo(view.safeAreaLayoutGuide.snp.top).offset(16) + make.centerX.equalToSuperview() + + } + + addButton.snp.makeConstraints{ make in + make.centerY.equalTo(titleLabel) + make.trailing.equalToSuperview().inset(16) + } + + } } From af81e2026e82d15ae249a303541641a83fbd3ea0 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Mon, 9 Dec 2024 19:21:37 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PokemonPhoneBook/.DS_Store | Bin 6148 -> 6148 bytes .../project.pbxproj | 13 ------------- .../UserInterfaceState.xcuserstate | Bin 42023 -> 40729 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 ++++++ 4 files changed, 6 insertions(+), 13 deletions(-) create mode 100644 PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/PokemonPhoneBook/.DS_Store b/PokemonPhoneBook/.DS_Store index e0aff5457b72acc3d28e8a67e380ce9e2dd829d8..0de0a61c097fefecca52dbbfd7c46b760eef219b 100644 GIT binary patch delta 67 zcmZoMXffCj#Kd$ZXz~IktI2&#T&(+lTO6vGJeSEG&a&n&$S@2}&d)7i00BmY&5q2+ OSSB{`ZD!~A%MSoiL>FQJ delta 67 zcmZoMXffCj#Kcr9Jb3|=)#N@VE>^ZZS9aM>p3CG8XIb+XWEch~=jRqMfWd;zj?Bkc NCN}VGX6N|J4*&p;77YLZ diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj index 8c3d864..95e3156 100644 --- a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj @@ -14,22 +14,9 @@ F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PokemonPhoneBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - F909970A2D03099100A92B66 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Info.plist, - ); - target = F90996F42D03098F00A92B66 /* PokemonPhoneBook */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - /* Begin PBXFileSystemSynchronizedRootGroup section */ F90996F72D03098F00A92B66 /* PokemonPhoneBook */ = { isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - F909970A2D03099100A92B66 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */, - ); path = PokemonPhoneBook; sourceTree = ""; }; diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate index 69cd670ca563ca908de9ad8783936c0870e15f60..7b1877fab4a99e14d36f004799911017d633c26d 100644 GIT binary patch delta 21473 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�bL{ciPw>Lu07 zs#jL8s@_t)z4}1);p(H+$E!cD{-XL}_1`tHhOS|2gc{wNp*16F3~CH({AyJ7HA`!{ zYPQxKsX1D6s^)UdgPMmmf7JX{^StI|EnBNot5-X;c0{c~tzoTkty!&QtwXI_?Sxw2 z+JM^N+K}4V+PK>6+PvDr+LGGx+RECtTCujhc3SPD+JEW>)yeDh>W0< z)VbBU*G;VRsPnG#s|&1~QWsVip{gsYtE+pbuD5Py-Lblhb+_vt);+3wQukNg-*wOH zjp{AyUFu!y$JCFl_pJ}853UcbkEoBTo1FRQPtZ>m?-zgNGheslf%^;_#du0L3R zr2f!lXjDC)6k|7O(UD^njD&( zo5nPaYnsqBxyh@^x5>Y$uxVb?=BDFKzcy<(+cZZvXEbLvXEoNh* zPi^jOez$pE^MdBp&1;&wntPhJH}7cPscPQce82fw^PkOsHUHD1(_-9W(xPZFZLw{! zZ*gjIY4L3dYl&=$X^C%1YB|_)qUC(c<(8{0-?iLoxzqAf%Y&AuEq}FYx0<%vwoYk{ zYOQLW(YmO0aqE)SWv%O4H@3dtx~+9*>+aT1S}(L-Z@tlav-NiCFRj0|{?YnZ>+{x^ zZETxLXdBd~-DcQk)@Ipe-DcP3(&pCY-Zrsqa$9=alD5NbU$&iTJJrBpepTvTock#T{iGl^xX`D?3hh{NC|$DwsNW>d>hprjDFyJk?_A=&80- z?Wa0U9Xr)?YG7w%XG~{mXK`m$XJcn)r@C`-=d#X~ovS;$JJ)vZ?A+7&VduWi1D%ID ok8~dGygPl+^s&=3rx#7Ho?fS^2|)aPDSbb}cFpU+-|5T#KbdL7zW@LL delta 22469 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 diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..2becf25 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/xcuserdata/mooya.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + From 429e4120dea807ab3dd933560edfbb7112af39a5 Mon Sep 17 00:00:00 2001 From: Yang jeong mu <105642388+jeongmuya@users.noreply.github.com> Date: Mon, 9 Dec 2024 22:19:23 +0900 Subject: [PATCH 5/7] Update README.md --- README.md | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/README.md b/README.md index 9830bf8..6a70965 100644 --- a/README.md +++ b/README.md @@ -1 +1,113 @@ # PokemonPhoneBook + +**목표**: Xcode에서 UIKit 프레임워크를 이용해서 스토리보드 혹은 코드베이스로 포켓몬 전화번호부를 만듭니다. + +## 📝 협업 규칙 + +### Pull Request 작성 규칙 +1. **형식**: `[레벨] 작업 내용 - 팀원 이름` + - 예: `[Lv 1] 필수기능 구현 - sonny` + +2. **작업 세부 사항**: 구현한 주요 기능과 로직에 대한 요약을 작성합니다. + +3. **Github 커밋 컨벤션 가이드 (이모지 버전)** + + - 기본 커밋 타입 + - ✨ `feat` : 새로운 기능 추가 + - 🐝 `fix` : 버그 수정 + - 📝 `docs` : 문서 수정 + - 💄 `style` : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 + - ♻️ `refactor` : 코드 리팩토링 + - ✅ `test` : 테스트 코드, 리팩토링 테스트 코드 추가 + - 🎨 `chore` : 빌드 업무 수정, 패키지 매니저 수정 + + - 자주 사용되는 추가 타입 + - 🚀 `deploy` : 배포 + - ⚡️ `perf` : 성능 개선 + - 🔧 `config` : 설정 파일 수정 + - 📦 `build` : 빌드 관련 수정 + - 🔀 `merge` : 합병 + - ⏪️ `revert` : 되돌리기 + +### 레포지토리 설정 및 브랜치 관리 +1. **Fork로 가져오기**: 각 팀원은 레포지토리를 Fork하여 자신의 개인 레포지토리로 가져옵니다. +2. **브랜치 생성**: Fork한 개인 레포지토리에서 각자의 이름을 딴 브랜치를 생성합니다. +3. **Pull Request**: 각자의 브랜치에서 Pull Request를 생성해 코드 리뷰를 요청합니다. 모든 팀원이 Pull Request에 코멘트를 추가하여 피드백을 제공합니다. +4. **수정 및 Merge**: 피드백을 반영하여 수정한 후, 팀원들의 동의를 얻어 merge를 진행합니다. + +-> 풀 리퀘스트를 한 후 Merge하지 않은채 커밋-푸시를 하면 기존 풀 리퀘스트에 들어가기 때문에 그럴 경우 새로운 브랜치를 만듭니다. + +## 🌟 필수 구현 기능 (Levels 1-5) + +- **Level 1**: `UILabel`, `UITableView`, `UIButton` 등을 이용해 테이블 뷰 만들기 +- **Level 2**: `UIViewController`를 새로 추가하여 연락처 추가 화면을 구현하기(파일 이름: PhoneBookViewController.swift) +- **Level 3**: 상단 네비게이션 바 영역을 구현하기 (제목, 적용 버튼 등) +- **Level 4**: API를 연결하여 버튼을 눌렀을 때 랜덤한 이미지가 생성되도록 구현하기 +- **Level 5**: 적용 버튼을 누르면 연락처 데이터(이름/전화번호/프로필 이미지)를 디스크에 실제 저장하도록 구현하기 + +## 💪 도전 구현 기능 (Levels 6-8) + +- **Level 6**: 연락처를 추가한 후 메인화면의 연락처가 항상 이름 순으로 정렬되도록 구현하기 +- **Level 7**: 테이블뷰의 셀을 클릭했을 때 `PhoneBookViewController` 페이지로 이동되도록 구현하기 +- **Level 8**: 테이블뷰의 셀을 클릭해서 화면을 이동했을 때, 연락처 편집 페이지에서 실제로 기기 디스크 데이터에 Update가 일어나도록 구현하기 + +## 🔥 Challenge - 디테일 키우기 + +Level 1 ~ 8 까지 구현하고도 여유가 되시는 분들은 심화과정을 고민해보기 + +- 포켓몬의 덩치가 클 때, 이미지 영역을 벗어나는 경우가 있습니다. 이 때, 원 밖을 벗어나지 않도록 구현해 봅시다!! +- 연락처를 매우 많이 추가했을 경우(예: 20개 이상) 테이블 뷰 스크롤을 빠르게 내리면 이미지가 겹쳐 보이거나 텍스트가 제대로 노출되지 않는 문제가 있을 수 있습니다. + - 이 문제는 `prepareForReuse`의 개념을 사용하면 해결할 수 있습니다 + - 구현은 못하더라도 개념 공부를 추천드립니다. +- 어떻게 구현하냐에 따라 메인화면의 우상단의 `추가` 버튼이 잘 클릭되지 않는 함정에 빠질 수 있습니다. 이걸 해결해 주세요! +- 연락처 앱에는 또 어떤 예외 사항이 있을지 스스로 고민해보며 자신만의 챌린지를 만들어 주세요!! + +## 📜 구현 가이드 + +- 개발 프로세스 가이드 + - **`UIKit` 화면 구성 및 화면 전환** + - 화면구성: `UITableView`, `UILabel`, `UITextView`, `UIButton` 활용 + - 화면전환: `친구 목록 페이지` → `연락처 추가 페이지`로 이동 + + - **`URLSession` / `Alamofire` 복습** + - 네트워크 통신을 이용해서 서버에서 랜덤 포켓몬 이미지를 불러옵니다. + - 두 가지 방법으로 모두 개발해보면 좋은 연습이 됩니다. + - 포켓몬 API: [포켓몬 API 링크](https://pokeapi.co/) + + - **`ViewController 생명주기` 개념** + - 친구 목록 페이지에 진입할때마다 목록이 `이름순으로 정렬`되도록 합니다. + + - **`CoreData` / `UserDefaults` 활용** + - 연락처 데이터를 `기기 디스크에 저장`합니다. + - 두 가지 방법으로 모두 개발해보면 좋은 연습이 됩니다. + +- **포켓몬 JSON Response 형태** +```swift + // JSON Response 형태 + { + "id": 25, + "name": "pikachu", + "height": 4, + "weight": 60, + "sprites": { + "front_default": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/25.png" + } + } +``` + +--- + +## 🎯 목표 + +- **기한**: 12월 12일 (목) 낮 12시까지 제출 +- **제출물**: + - 개인과제 결과물 제출 (GitHub 링크) + - 트러블슈팅 TIL + - 과제를 소개하는 README + +## 🔗 과제 링크 + +- [Ch 3. 앱개발 숙련 주차 과제]([https://developer.apple.com/swift/](https://teamsparta.notion.site/Ch-3-1522dc3ef5148059b6c7f310f7b15966)) + +--- + From 3e5581d88abae2ae9a771ab38cc0e9ff0fd031a5 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Wed, 11 Dec 2024 19:10:41 +0900 Subject: [PATCH 6/7] =?UTF-8?q?[Lv=201]=20=E2=9C=A8=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=20=EB=B7=B0=20=EC=85=80=20=EA=B5=AC=ED=98=84=20-=20je?= =?UTF-8?q?ongmu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PokemonPhoneBook/.DS_Store | Bin 6148 -> 6148 bytes .../project.pbxproj | 13 ++++ .../UserInterfaceState.xcuserstate | Bin 40729 -> 51289 bytes .../PhoneBookViewController.swift | 29 +++++++ .../PokemonPhoneBook/PhoneTableViewCell.swift | 71 ++++++++++++++++++ .../PokemonPhoneBook/SceneDelegate.swift | 2 +- .../PokemonPhoneBook/ViewController.swift | 51 +++++++++++-- 7 files changed, 160 insertions(+), 6 deletions(-) create mode 100644 PokemonPhoneBook/PokemonPhoneBook/PhoneBookViewController.swift create mode 100644 PokemonPhoneBook/PokemonPhoneBook/PhoneTableViewCell.swift diff --git a/PokemonPhoneBook/.DS_Store b/PokemonPhoneBook/.DS_Store index 0de0a61c097fefecca52dbbfd7c46b760eef219b..db0373b3a59139fbc2ab9a6d9af4e350cd668b64 100644 GIT binary patch delta 33 pcmZoMXffCj#Kd%S*W?9ER+IafmM|J@c4R)rGO>YgGdss$egM>s3>N?Z delta 33 pcmZoMXffCj#Kd$ZXz~IktI2&#OBfY4J2D?*nb^R$nVsV=KLE*a3z`4` diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj index 95e3156..691ebd8 100644 --- a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj +++ b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.pbxproj @@ -14,9 +14,22 @@ F90996F52D03098F00A92B66 /* PokemonPhoneBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PokemonPhoneBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + F9DCB1412D0705960054FFA3 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = F90996F42D03098F00A92B66 /* PokemonPhoneBook */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ F90996F72D03098F00A92B66 /* PokemonPhoneBook */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + F9DCB1412D0705960054FFA3 /* Exceptions for "PokemonPhoneBook" folder in "PokemonPhoneBook" target */, + ); path = PokemonPhoneBook; sourceTree = ""; }; diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate index 7b1877fab4a99e14d36f004799911017d633c26d..7cc6d138643dd22e569d7bfb98004214ef4ea32d 100644 GIT binary patch literal 51289 zcmeFa2YeLO_BcNG&g}FVHuNMw5)zt_vgtuoQYfLu6gtFBvV?^s8+JE9Ky2WQEp0D@ z7|gH?$2b_C5g2(^(lU=f;Po}kPICLJ7kS}Zc~a2VI4j9lwb)Y~4D@8s+6|S?9@EMu zdzw8p`5~ZPjL1k8WkGk)W1yR&xF$wnRHh%(pNVFYnG`0KNn>10I+MXUj%(u*U%=gR>%rDFV=6B{0Ldb!5Bp?y>Mtx9U)DQJX1JFQ}h?3B7Gy-LzY?Om? zQ63tNjzxv22#rG%(IixkD$oox6U{=i(Ht}v%|lhF8ZAL}s2;6DXQH#v+2|Z}E;o%L3`0F=vDL@ zdKbNi-bWvxFVXK18&1N;4OG7 z-iB|*x8d9I9rzynD1HXNg!kaR_!ay*ehcr%@8S3H$M_TcE&c@`Vlm6I0;{kp>tv(Y zK5Sn$g-vDCSQnelX0VxT7MsoHu(|9Qwva7i$FWn{Y3y`%Hamx%%g$p@Vr$qsww`TZ zeQYDUf^BA3vTNA0*$dfA*~{3=*{j&=*z4Igb|brm-O4_~KFU7EKF&VDKFL1CKFvPE zKFdDGzQn%DzQ(@IzQexDe$IZue#w5te#idA9%BFC7*6CQPUd=XG29?-FqgZO3SI$*%Gq{=DEN&iG#Z_~)Ts^mxTgENt&f(7G z&g0JKF5oWYF5)icF5xca)^pcz8@P?!CT=UYgWJj7#NEw3#67`1!#&Hr$i2kv;r4R- zxYxP2xc%JQ+&kQ7+~?dE+?U)B+>hK(+|S%E+yMu2a1O;0<>{#OPIhHw=J61Rh2XUO{IM;EW<9x>j zj!PU@IIeeWaI`pD9orl?I<`A*cHH8)+wq{|QOA>xXC2QuUUK})@uuS~$9~7#j?W!m zIKFgz<@nn1qvI#XZ@h!&d4Z4Od-A>bVf=7@1b+-ak{`t<^C^5PpT=kMx%?P@9zUO7 zz*q7o@ov6~ujXrb55JJFBgznQ;*-@*ZTwyQ-Tce^E`B$^hu_P;!oSMD#_!`_=ilJp;os#y=0D+o;(z9U;Scb? z^1tza2#ml94nY!R!6`%uJ%wIEv=Af23Il{BVTdqP7$%GqQiUubTgVZP6;2R}g-OC> zVTv$Sm?o48vxIrVNkWaVSXd$~7gh+(!b)M4utqptI73(`TqayDTp_F%t`Rl}8--26 zHsMBLyKswet8klepYV+Etni%hyzsKHSJ)@KF1#(gBfKlTCwwA&Dtsn3;u`UE@eJ`C@m%pdu}$1A-Xz{E-X`8I z-X-2G-Y4EKJ|sRYJ|;dcJ|R9Mz97CRz9haZ?iJq<_ls|fpNgM}pNn6J--|zpKZ-wz zha@D4k}ma>`bqtzcqvI5B8`xak!njnYzSg>NUuq6Ngqp} zNS{idNnc6dOFu}5q(5XvMlzOpS(P<8O7121mWRtD9cx9pJ@%BRSu%7#qj)8sYs>GB!!T6vv(rhKk^iF~zujeMPf0wtx~Ji8g-HCQh|~Jzu?Cy+XZS z-JssB-lN{D-lyKLKA=9RKBPXZKB7LVKB>N-zM{UWzNWsbzNfygexQD$exd%L{;2+> z{;d9?F&eMQnxgg6dTV{OSZ#ndN=w#Kv{Wrkb7|>Xww9wEryZ}2*CuEawK>{cZJst? zTcA~HCuwfYqt$8kT0jeGr)Z~YhDNkAw6nB}w2QS%v`e+iwJWu2wd=Hv+7@lA_JH=F z_K^0l_K5bV_L%m#_JsDd_MG;-_JX!cdrjM?{Y!gG+poQ+eWrb*eXISf{jMF-{?J)n z(lx!G-d~T_WAu1EK_8+I*HiRVJwwmYPteEe`FfE)L9f(L(%pKMUai;Y9(|!+t1r^M z`eJ>FUZ>aV4Z2Tn)C2mdx}g*OG<}VJx_*YfRzFw2T)#qJuV1NOrC+UY(l_hd^qu;H z`a}A|`XlBaP&Ijt;ZiKjU*2mTGoO*4|J>)e4rD-*@^ zG_b+8GQF8T21n56#;{6f(s);4L3(apdU94_Mp|;__{@Uj+#*+6a#nh_D?g(sBQrNQ ztJ2xKxMMt0dm4gv&oN9QGinPH%M4%!GJ}{nCZ0)P1{)58Hv~g8 zBtte7L*2q8F+-T4@H-qp;Ip9_y3qrEod7~Vr&KzVp`VHFz*KLo9|XFZ8Sc6!Phh;? zS3j++)DsB${O+nck16aGxr6RXXCFE)Z$pi5d2wJoEJj(i-{Wam5H20>ch`F=okPO~ zhT1w0JgIaZPXXoA?Wwj)p`7tSw;EjX@yxC z$(h+X>B*US>6yuSxoL&TIfdghGShO?v(oblDxGoAKz?-)#Mi?#G7_N?CkiwoV0lQpDQmN{-kAP#oN1)#}qQ7wlbrc zW0^6`am?||3Cvg~pD8e+jGjg>qqot==xg*d`Ww+(VHd_Rlv!BIOGNU##vza-}TxK3KpIKnU8Uu`h#vmikh~Lbd#JHI%rkbf?JVt_%YK%21 zj2VWT&N6;hwXepL0?khL22;XAObKsfr86-MGR+tCR(k>_r1>!nU+EkWhU(mqIT=`| zGEW_>ho`1Pm1DwH%6v`!YES6gRTOs^N8uuOL#-zOD$oSKuc^^$1r(-$J@*DCz>M0+ z_?Sj!DdRT=8;M4eF=QhXWSW>|Owbr=3^zu=Uzls}@!qAPWrF>E(;8ncEuojGHUMT;5$DQ8(9 zJ%M@C%8I;zF}?=3zqu8l*3Oz%Hr>?uEQIJZo-!YtF95XrIEy)l>D$7bZ5-3WoNJ7v zB#k0bw{>;{mAsI-h`G4Z83S8QNl6LSMoT@7eop`hnwyToNH#`Ik3vhUY)utmmUHmE zqv13IAr0nN!@dVRH9&wov%Nu2y*c^$fzYNFLrGvkpqf&R5?=t2!Pk(H|K#Z}e4hGd z>PA6x_S`K>vRdBg4lbGvl*_YXqPHQ~swmKWiEjxU{f3f7z6MW$&$q_&PIb%AF^ zqq~9X#%5QvwMS1qRJ#cpic(t?fa#@%3KxFa(g%wB_HR>^ewEIF;if2xwG*?Hz;f@x zpp$Ej8Q2;-Adw0EBtD#EeQF&PmpHaztobEz>^ZZnQW0245~$Q;n8~0v&t?_?9@WEP zTf>~eoDHgRD{}*=#ygq2n0uH9nMXnS{ebzH`3w}_gUlaDv>L(4`WKi)rymq$os!F# z%Yj~xThUl&5&P*)!8&h)hmPM;`RTTWPFx#v1+$)6`omG|P!3l*kT-il4%G>(@ zG)>QL|JtF;^5#ZQAScva<&3h*3|Bjxxf^9b6B}xaYvA~J7kYtyS<|?Rxf&?hw6dv9 zK|0{}6W+#LMbEf>ey@d91Dw5%xt`g;v>0iI%SbmeHZpC@MrISU*~m0Pe+*}L zFgHq)=-%}0SVv#8mFM)}A8t8u1 z6f^~cKBz;fVEg6;4AIGeki;4M?*3YIOb0P)gTd||FmO;@cO(p?u6)1W-P}4TK1{oy z{@}z7h65@M8M+{R5KOqXA%o)K`S8S+5g;KsEUBUESSl?RGtTe#`Js_ypxT2f;n-Sm za0-EDg=vC0c!r zpp^lKt!5g4!JG!?dMEP|vy0ioyu!T3ybd<7PXYPA0Nd9=uy$$4iK5XU6o(SfP_S?1 zq2tk5Q~;K(gr zRYsxLYnp(4RRfEP_ca9@n}YERy>*`WVW|}Xu(GDs`+Uvr)G6L7Kd{o&BF{2U9Yv{B zQwo9aevn@&gL9{LWl6~kn`^5VE%#S14Ek2AXslXR?OjyexMcatm45%S)Pg2&T}^6< z-&fNF7F%ctWV&Q;BjslSZ+%l8#o34^Q{0V>sl^QoeJLi#9Tx9vh!460OGd{-LzLIj zXC|YDqwk6T|G^YGkI`0_0;v-~*=VYYSb)D!(7rrQ)Y>rCrYXQn+9WMVhixa%1MFm@etIq;npW;3%Duf=ELbHFltg=vx9-USl}bjCz{hmCHJ zGLKVqd(1elg?Yj_{!h{E89=w^{tVqt0Qt+&72Tr#eRO;F=%CxfFZ}xW&<(9U`?U7z z-OV=i?H4IKiBU-@VVLI#`w+5t3Yx00d0N*)anVwM57E8xpGUTrs6PA`06Ev zzIvNygou4Vcx2*exu43Hz$;Bw04hemqJjxw8JfzC@XS&N%;rEBoZe8^T-wyo0K!i} zov(UHfGXV~rMeW<8xTHe$05jKXaV?D5THY?Ik7#r4}nX72=o!iik~o_8pXyWW3n-2 zBl9`%jwI$QW2#XCvpJE9Kvdl~2Mp}b4YG4hh^r?;d0~^^52KvoZfdArRA%wUQqMx@ zwxQb6Zd?F0(Y?%5+yGL!yRNR;Zl$oK!fdsc4sQ{VFsNg$1Ta&($IeO{h!AGiyG_%} zkIc_4%umKNV|q72yd@9*%KQe3PDmOo^90+NUqLEfTQRK+zRb?Zt#PO4WmctG?frq6 z4MwS15n;r3l^&psW7gV2hm!#vZPlu@QSr&HwAG{HSEc8qkBZNA<*Z))7j)XtCLjsv zun9;;3R00~%rs^hvyC|$Q4e6-QK*M8*O+I_hrjg?4T)w3Jg)4NXx7I5YklbnQTPX#4D4djX|uepB9Ew?|= zh4S?6LV2FF55_Sll^%?dXcS6DDMpo1ZPXZ^jVKN5E7i<=VKlhl*P%!dp)!BjyG)1x-cM&~#LSPDG_f zgW)q8jirX)2pB=5w9=U!S{F)m7lOgo6w5q*x+~$q*?p(v2ZMfZRa1~IOy=LIXsJy> zFdGdI??d-poY>^8UNX^B*Vu9Cy9cErUZwNcaD!bpHgf!(Ag1_gE1hY7XBK7NmC#|% z->Cu|tN}P2>}ep(>FrZ8AA$X`1uZa^w=hY-w%~NcQYILn{4&HIsV&1&RBh88szJ5% zaCy)|quE&53Z~d0z`aeAc%N|fDIWI{&|FP!3p(Sh((scIPo;+Pu(i@2Q3G1ZjJgr| zP$OE3{3w8es0l4Y%h3wdY@BSYHcl~4H4K9orx|OE(~UEXwKt+w%s#Xloq|q91|sM* zv<97y&M?-2SaFGQsd1TcIYEyT^c+DS6Z8o|pV4VXSuE7!F9R_?NatATJf^_2(B}th zW__dE?+y4GOc{deAfctO47iqL(IX^qn0Bt_I?tT;hYO~9}I*k&mxhd{uP@{mI z+EReszQ=8X6@x6Yq692@08->J8!n;VECDJvb?!a9<(Ht#=t;TMII{&^Zk%N;;f(U| z>b1)k=qkjtqN~w0#@WV&Myb8A*P}M3ZyVZxT2QNTj&ZJWUK`rTB%#g5`Ec+qFow+s zYeBnhV;=q1e%0WFuXK~9x@$okYO3+fhDEWal{ofni*wjL?L@am^mH5abcb;f^mH+0 zxIJt+2~7BOITOdux5($5>5ZO-;s&@&2{_@7$|7P9Af^R9Xk5`gnMcsmAmE}$(PQXw z^aOemJ!Pynt~9PPt~RbQuHB5DLC>P+;O`577}pus6Lh6<9YK##6zOnI;1pU@fbQU$ zCv;ePS!EMpJAl|iAxNw9tulJ@Tp1(h(#4(()>zXDJ`nJ#sjh}%R|(uHm3o!}=L*6h zrk7p;Cu=XuKJ+Ftstvu4-a!8{HW)2NYa4nC?MM5KHiFi}|8!4#(wXN6LY;@?Ri}N9 z;GubTU;&Go!7T2rwo9yq`VdXnj6OmiqfgMM=rg#o+i1LNd__u_Zypx zcZ|1 zS*&uXS?~5Xw1dMMnY%E3q1|TtGvj9C2IDs4PGhrCR_U}XB=nA`(_&f;w%-(mWfXH4 zv4SSFVHImwH?|ntjh#l_9vp>x!j}Drd*eQH+Iy=o#{sLb&A1V6X()nH+HPGzhOG9Y zDHh;p90ONPFp_q&ICKm9XEssd_WE0KEH#cF5hgScJdoLk`xrZb!b86i7ZEnpU=!-5 z!$J*%jT(+e;A8N}j(a{k=&c6~a@RK+w-~n?ps>`@b2mCQwUaT&Ui^Q@P}1FsS?iU8 zQ-SgW)w8>?&rK^%qs!FYBQOx+bew@R=QILwx0ctq!??ZDIp=7PJY@yFeQfmm7F)y3 z!MSr`u=c5K!+Cf#v$kUqU}g!BGEWUX)#KohG+Q;t;Nw6f>v}}nPf2HdZNh$4Jage+zX!~FU^g@v;~wMg|H>9mz!O2C1|rjnCzxB>*i;2p zPz!I81Ln;t_!xwRODcj|e84^vDJ7m-cc3X?3zapV5V6No@JwdZHarzi!_#pIJ`tDV zGF*-;@C@St<3Zyg<6+|w<5A-=<8k8&D!7M0vWt$BUYuc%h<|5_<_YwJpy34 zuerz@pcUJh4w%3qY6QGB9&lVqSx%iicH?Vdk*~wogMBNdsmWVY)eO4ibfkKrvB-lF!i@7Q#U@h*mu)E#lDZ|uh5b8d}OkjFDsq@ zouNeT_@}VrpW`oJ$G^f~!;XIkJN~Qjweb!?(Z(-bxBNT&eR#`%GQR1&yuZ0vpfA*!-VueKx;l%~*&7?V*Q{vn^^Zs1YgRM&`e$pe z8~@S0?soWL34`rzZu5ak=YM__mRlv;j~xtrpY6{^voUNeJAfU?4r1fjcs9ZK%{XZM zZX7cHAc!Fd3?-N#mLP5$n`kkAb{IRH9l;D?M>0tSIV|o^kVH@)g8G8DC+hb<3BYvW zO9_BbbF?G?HV-5Kb~HhJNCaSy0}+5do;`v75+o2LT7Qi?=O|}xh=s7@*;!fq zK{7!~D?5puOpr=YPs(Edl-nOsTCh7QVatJ+vnR5pY#BisL2wFsw6PWJ415JaPJ*KT z>kOTp&-7pyL^9-g?_OTL_mWA!UVi@SXBSkTehx5n)(xOlk)ZnTb(icsws3pf9M2!W ze_y-bc+H-_hh0SZ^g6cIc$uJHz^K{9#u9>hM+iev!p_98p^Il{f4lxtHfZvBHekF( zQ2!&;pI_|*&&67}DX1tOJ|co*v#Zcg>}vKDbbvJgYY!4M$heoFVFbleqFqSPkS7qgH45|n8G z#e_dVwforQU?2N0O0!>Q-ykTPpqy6rO%~`vE`e*hqeipeV?Uxa`+fEU_Ctd52m;=6 zY#aMA`w6AlV+cC#zfZHj215KzBq1JIeac6tdZu#M{r1VU?eD(0iqh=w0rZDR(8Q6u zS~kBo`GPYyKR=`N)7nwM;&BZ)Vsa4M&9IywNKqPU&}tsrO`K_vu@ zqtqL|O(AG{C-X7ao9kndZ!VgkNd%3z$Tva7rmDro!tvt<5Hul7wYfNp>QaZA?(Cwy zPW{9B*@I2fCpW|*zmqNU>;8wxZ@aCq1JUJ1SwwegrSqTf7d(W(ErELO)p@MZq)^kP z>Gu=5OEs-*8Q{W4OUs%X8-4x=Yg;E6`{1~^EVx$T(zy&Slb{m`DkZ3_jmze8I6&)i zf;H0jr92evYT-2jt5Nqi!!(0ETcl6I>xz#Es*|&kmdP2%1IEOoC<*RP&$M zsze$tQ1wNbZ7JaVv1wsF(B5)Kx79zpX7++U~6u%R`;E8OoeAl=+3SSvQ0t{8M*2^eQFZ*D$EFVMLK1fA5vokWlsn$xGy*Vr6i0CqNT z00mQ8S1rVy-kLGaSH3~o-) z+Nw>{57)r?0NgabflF2^*T}5x@ZEy(b8s*Qb~+ec4_X@+gd7B5DLOJ(_xBBeR)<+a zdwEuH1Y+&DW^N_7iaVKG&7H!X${7UJ610dQFF}h50?J%RP(48nTe#D>HQedk8QfZK z9d{;o7C}CO8VOoTke{FcK}`fLBWO8Ar^9XVc+*MVycz93J})gVFME7?dQn zw6y%Z^n&bc8c1k8%Ix|mxumWM9P26qrY+iTAp$Ina1qD_CdukLA4J^HtHc0|BRwSz zyuw2Lxw`h({wO2z(an0&=Yc1*tD!_s7<5YBP63=ccxCH(CWVs5f64xbH<=#6@T^+|ArA+^yVgzzA>V z?&R(wXf;7=2|AOYm6Q>}x6=t)*O?LC!`<7i$DBscs!nl*$2sLmqGtaFZoM@3|oAjiZ&hb{6 zeYoD`KBPqcJ??$(1A+kW&nD=cHtr+tW9}1z&L!v~f-a_5PaRwuB^1IQSsTixvN)O!}=95o4DV&gWT`j zAr35gmk@L*L6;E(K2G4DVgflJBE@vbh3h1T12NstBLu4=rp=mXc$RiEJ;CjT`x=Vv zg1+F`Lt!mQyEGQS93Y2Y1qF^c=rZ1s0938oa&Wfxxx>u_L01#>Xar@TcMy&tj-lv) zW4L_>K~Nh3HzJ@5k3?KUI7T^=+o=MOuxmR}1xE%@1xKbM%K>T@xZYe(5O^rs28#}N z5q43e_1TecVSUSyu^xB0Y6u-?$0SDusPvA>jwz0*j%kkRjuOX-j#5XN1H{3N1Z^T{ zGeI{Hw1uFp1Z^YeMuN5zv}2oNhNaRw<~Zh}{mc-@0;VQiB(En8W zqp#9C>OeYkfGBcPNTqi)0vT{Db@=HoK{pe0i}e?j`W{Y)z2D7_lR1?rE13x$4)D>qZ4TZzk=!|t&W?hEKTD+A|JvfuI;y1X+7;E<~VM3 z+}2Leo+aps&IIiqO3?0g+~>HTpeG4>iXdPtaa=yaI0Zj$Mx3 zjy;aO1U*mC3k1DL&`TQ~uR2~s`yHE?ICFIMxc-T&{*(J(P0)#EFu^? z1Kf4##Ul8NdX}4R#-;A%X4DWc-k8o$LxJyQ)gZ8dxX|gLSsfJrA`iHMcpJe50qXbd z1Y)*M-4E@te&hHKG(g9<1ijkg_@1EGsF)H3zEI&gx4XtVeg+Qe_{DL6pnU|qFm2~p z$3dO}-0tKY%OfU8Qo*1%jA7vwO&oiQVV>>K2zZfKBPwf9xd%buvO~~Y#<2D! zP8_@DCrc_|X=NKS89E z=`R%W`_^F}sQ-7!2Ye*maXapz1_Yr16?4GNHWb1+&I)QaU2&`=D&0bt+irNB;g307 z>m|iSFZD zbE09RR9);`#T z%)}UiJ~inapT%c`qg=>6Gq|Xg&jE+N4h8n{%i~9PQVjXy_$kb&o&53q3H(?-pD*AG z`67NCKc1h!PvndFN&IAjz98sJg1#aMn zG=4f?!tCQqnIU{RU%}7dOZZv*Y$_T3N-#?}7vXvuWrWKF!HCNuTn^zTLJ! z5&a>^58RBATVb0Xa7nE?be*$l*=^sxK4^Z^(`FKZ{u7XgmcOn_KFk00P- ztmiZaA1p!Co7<$GREveZguVc?f}R!Nu}`N4&Gfd$*Lf7c&bkhp9yN2oJ#719cqC~w zr3wvzsPjMwS9?@|wFCuVL##1dgNcA+CXh<#wE#xFq|pbqh=BPFZU}2kMTB31CTs&? z{x>d)CHQN8DR(Cy;DdYB$9I*?EwMD%+J@kegYQ z?8+!~rH^xE6&0nA>)6ogW1iDsI?HMZS2~yeLo3p5u1^K6o|?l`8ml0GgKx2o@#peafO^B9$Dhw%z+cE; z#9z!`!e7c?#$Qe_N3erno?wAskzk2nnP7!rm0)cfzn;I6zly(_zlOh-zmC72-@vyJ ztP^}X!4DI>o8V6g%Mdn+upbhxFX56YGd-d)VOAlH2cTjEDCTxtl$8_7jN;HN$@pnCj zE1iW$nvv~IX?pdy2PQU$f;-!%*g2}MGoek%hZICXU|Vj$o5cswa?p5{$>!d z_?rms(Zb(Ca1_v51otLjslJdxmHS~iJdOd1`Wi4!!G#M+C>a9JnIROq2I zDf~FZ2Sai)6^W_1YsvwzbzQ*nYeKnc0-=ERkUKD(!Z2iaV;JuVRxdJP?EysFyvW{t z`ziz&ThoJepI!9zCj z-|*k^-|^q`KM*{W;Nb)xL+~hq)98qMR{QFj>di3Y0EiJFj=(hYT@IMiXrpwmkY-&D3oapD$PhAV>WreP)((LEo8aRJ z9z*c41dsp!BngHqy?Qz2SkSS_4Fa4ErMt%4yCg3Af6pbOH@sM}j=A50j{ z!;HOs7Tv*jW)-_RFVh2Zx7UH+f<2rwh4X=J2xkdr3+GsDV+O%937!>V8^Q&`g~CO` z#lj^7&n9>d!E*_oPw+`clWkaNeq}p24S9irC3}%$=+W-}wvo z3y;$EeL#3nc*t5`55a(Qwf6cxCOj@YAv`HOMKB-xSz z3tlC7$=_MuHz@P`m++?W7Qyud0|)Za>OD%!!P|z0by^6x0KRuH$IOAR5Jd=y4nk}H zK5ga$;X~mgf|nBPCpchkfX##FxLnyb6Lz_BLLb|m=t7L)OW~V{P5I8;lx6Lk@}uw@ z-ISk%pM_tnO<7Lx3WA&MO*tt1E*uj65E+7361%a}G^%+X6oC_4jhXAu>OF?mixmeD zd>X-PU<15un0ot83eCu6^Do*Tb@Pmjh&Q2aipab0`K$x zQ%WJVhNaXsf?*_eDg@|5J_6gG&_O#D)2xAx zwDg>m%$(e;Tu7jvnVXjdpr9jUr-1b_&6Sgtk)E5Gmq~p?AY-*yC00X(yJ^I46{{d= zZ)jv5Ix>RS!x*|Bfh+Id9)aDL*Xrx4j(ugOWT$0hW@V&h=47~XyX`AGVzyb?nc3j_ z(%o$BzUr;Mt_k<$%F4-sMT7-TbLGNn<cDbm^3hx}q%1Teq$b*+M zz<6QvQ!=x1v(vNSn1jhX)ADE%*TTKFxK2EiHoBGIZC2A0%iYPIMagrjXUwUZT$en) zD!KH;bbGAli|hYB6}wWrO1v7V*tOzy;`QPNO2xJl4ARrRCKbDn;0FkPkl=?X6|?5L zk)r=5akF@XxJBG5!q9dQ45HdC1m8yR9R%Oij{ZBWP1_mXG%(z!O13U)Uy$YyD8)+1J5cbk2MocmlE7P965fyzkBTD>~)gir67enH(cGwdV& zr1+GDj@C(pu=*D9IfCy8tV?rEO0H{6_RW~u0qcgZg0)S7y`$%fZZG%@Lfe@s=^1IE zGnD7b%E}2L-LCfb>>ghcUjyY_1X=u%7I7cJk9C%(-m=7)NB<-4rS_QK5y2MOCcZ1a zC%#Yc;{-oJ@RM!ghvG-##{`4^0!y-s${dj{on72QBLO=3eEtQ$QEMZ<1b;B`EAeab z8*mH7PZRtM!QiX&&$@+LU4!q)Ch-^XfcUHUn|P4m=Lvp+;1>ygiQtz*&X}T|ixpfy zC2#}neyo=3rzC;?W6dQzlTb5K52^ut1;uuODc!@oEl4WeAI?uTw0BapGyo)ZDMpGV zcn`s^v`Pb|K?J`>@VlK(mXv6nti7-Y_8n`DnTdNDNRR=Vbtxma+MNenuj56iG~BB8 z>XE8}G?nGfO|yqIQc9si8YLwY3@7~cRw-3VBlr!1|7E0{cj<{k+V64iNTp=;*Dmol=@3&F?bF1rkVq?-BgIk&<}ATdSTM zq;fA=qp7B?)kq#`p;Sxo2LyvA42T6;JFMr6>2qsZ4IQTSAx!I`uj^Nx1QW9WY0{b_ zO{>`+HZ*1ryW_MB`}tv~wN5$<$dhy?!JoBApsak+`4C-Torcfv51mq=Sc zE|IoM+oT(%?a~ejWDY>pZwLm8^aH^^5&TP7E|EgA0w693|FOWqv+^L{a&l%yj>*hG zNCjB~IJV8Nq!7#hHe4Ymy<-K_A-z+D5aa&dtPle|WMorL9qJ*+6lOYh5MsVRw!>2& z_v9=~<%xt3G0>me;nS&HpJmBTk?>Dg4EI1gybI=-oMj3A9pEjUSb9c!wgan`UI5l8 zy+|ONN!^^u6P6@u1$Jh`at@SunxlZBy2Cr&$_X9Ghh9h5~Y+2Zz%nbu-R5NL&6sPFM{UiN6^S;QL1@1VY5Oqq!(-6y5O3u1=I zZ&K8qZlmsrR1qqpNId_4xcd*_?q?KtKPPO7jk`1m7WTpX4;J3~&-RFsf0Tcr$Lc5f zXTp{ewyae?Apc6(a>C9zdbs|0md-16KGhP_jb^rP6fPU#EDY}mOFx28lx+!{MC0{f!SGa&?21}O<9$|~^`WfvTwl3in%k`5@V z3|B@d$0#F}QA)CsqNFNm3UJkv2)obgSSYLHD7h46 zm18N&F1As&j<72%lx_YW${u}`Rf+*+6(FKZLMW?DJrc?)<;qMr7)pf#SX58ghE`>k zGMlhI!ZsZ>lvNfeRTO0_m6H@WH;se^iOt`pR4X+UWdno_{`XOK3E*K}Bp#{}iBuL)g;^d&V~9k`U@%VdalguBNEF)<#{($z?(R34$7JVb@Xb3s^S56X8#?zHZtMSEONDbG=ae_DA)d6qyrN%jK5Uf8BQue?AJ z9**I~7Q+91`T8&C3IDUK-^yOV;#VTEI5LaeZe<^Uz8(o0nVZg@|C`F&7S8UcID08b z$SfGQ^1I78XIJ@90jIHT%16q_$|uUF%4f>w$`{I)%2&$QgauUymTf&@uO#eMguR-u z*AVtv!d^$%>$fT2hLHA0D_O5{fFkV%8)+dC1|V%;inKfahqOl@X;lG`Rs|zsO9*LI zcw5S0lJ$o6TJ5R!f#ad}Qo-=oM%az5YG1VQHr76m6HPe!@OL*autHpxQ*(hY0(` zQInO`l`6c;qfK3WARc%u@s+-i!>J91^b*s8f1ri4m%X5T%ol|XbtLUpeNo*- zG4>@DcJMXA?rT+dt9u9wIP~_>!`OZ5n-pVTSKmVlF$h_Rx-zXI>B5t@!2I`7i^dW5lTJ5enq*x|eO&3BZTk-es_T=h z7tyR4f#g~%od)<3RaP#yUaSkLf13Z^3(@SMs9FzjuF*6NQ2tZGe%7ivInby-heW0H zI=R;(A0&RMv0~K1c|0;{@Ev_GlljIy>&3oy{JaI4QsZ|oG+){14NiqzFpzuH?y;}d zpH3d+#V=a4Xu^I;`w6`^GSmaTMYF*NY7if>SsSFqY4KWuHdsp}>{o;Zt>PQP!a{#X z*zY%ML$sl2EMKCHpnBa8g#8K36Et5+Z^)$wiocW;REt#da*CX)7Mtax7ylK!=5nS}k3W@(IvjgL=`?;4z+no?9& zX}(>`Ub9?nG`x^o%OmX1EgD=6{X)?<|1hu%nD2JbcL{5H18_m^24451lE>s4)$ zZ%{j$uUFBk=%J`492a6D+QJYM(Y(w)dZ$4+2mDj#RP04=&>HE1@DWaE(UuZUq>J^Z z?^CgBH)+klAhc!La%~0SB*MvrQ`)qZ+A6Sya4O-n|GN28JB{g~t%;=i+vL2jpMNud z*iCoseC_P#%MJm9(AEOzx=7I0#@)A$JAdNt`?qfWKM!P~=53g#Q1~0*F z)vgG=fn2+aZvWMU>jO@UW0N{DBkg*vg%Z~dgzML$wGuA6GiR~h3&QoUbk-gvhlj4z zBh^fd5&$9s0pp&a{kCOon|2$x4rw=P+qE6qPVFY`X6+X3R>H*)E|zcu2se;$g9sN# zxOl=PY|(Dl?$GYk?$Yko?$Pem?jzh_!X*+eiEu**HDwNuf3Nx6ymi)|WPaXYOt(HiV}6E=Tg3&%g`vDL(?eC- z$CNm>?qPF7ZPa^Fd#RIGj<#FdOE-8A;fA+puMlnoU4b5+6^(9SH8ti66oq)l>)IP| z4vsNT5_3>{vz0kWBj;mjCO`Vl$Z|;X(lE_iXU11eb^Dii{C2l*YwvXK_I>Rm5EE#w zD}rcVt5)q}?GwVK5Ds!**tI^_zNBOOf^exV@NNo|^M+&Gy2j#%PsVrJ4_#{6?fs&` zYcE=~1B6R&(SW;Tz$>*u@}Ox5AWxn7GRlYq-R5fR44?=TW#F*0oX+Vy^g_#8bb)Z$ zp@>Am$nggchN8wR*SNh=6cAeW*SRs7(m~Y$dMV+G2{(ywlL)^tt*x9Xv@0R|fJBh(+aut03GA!p$VyEW*t;hRyK?#?^Uiy|9vy=q_l! zcEbu4g?Fh27yA755H8oTxHtgh38HU<0N>@oOvq*fDN1Rysa2z_XtJ4Fl!m5uYTM3y z1R>NGWXDW`v%{6ckF61nhxf790Uq_~I36>(2$ksIP;@;t-IN?(vn*I+hQcOyf&NPe zv%)-xpa*rS?1GT`8D2B1?i}kMSI(#mi})->G+DX5wL!fZ5_;%O`Z9gF4&u{1!p$e} zdJV2}qrOsKrJt;?CfrGca}%zLaMkpb_67VmQ)q;95|(>|bievXJeUCrjVZWBKALX5 zya#e;MbrwVLxhTDP4)F|f3t-|Wu97^lQB?XIsngfW#^}7rq?(>v!=BUf@}0M^|SP| z30Fh7#e{2UpXGV_Mc@^!pRZq_Ur0C);T96EwoSiSzeHb2xJ88X!X)Y3C~fOJw@!VR z_`N>AnNyOcTs;C{0VF3b^FZbzlUz7Q92wf`!(?=cV=ak^IWgYeqHFXG-3(qjUT@VQ z8vHH7fvi_&q*OEULogG+TfYHF-4=Z-C8RW?$@C~rseSA?Ly9v4-Qc@|5IRQ+ky=mVC<6>J2i;NzIvvvFgBg*JWdyR$G?Uw6c+kO6a0Tm`3 zerhJ93+u*C#>wxVHofG;Io6KSOkcCCj~;X7y=D?IK-|`nQrHqJ1p(A3uUHUflr+m~ zb6fe0QrK(rGaNQ+u5{7OsX&d{bAWnxUES8X5Dphn3efWxgw96m{8IRO63E6qJDj!} z3(s1spn5mujL1YWF~F`yFzHMVQ_M_ZPGrg$AJfE~%$&iT%UsD^&0Nb|&unFGX6|Ml zW1e81VxD21V_snPGVd~FV2J)%9p^)!&*OZ|EOzkLT(w!R1DM z`~2{3fK=sf({I#wFl%86={KAD+@#+L1}-3-x9GR(7wWg`cbEheboEA{p@ai<-M?AA z746sW(eFk3(S9(|6SSUi0m6Yaz8?Okgmv(dDIh&ye+mS{0-#|>Zixbw1)C{9`V&Z+ z?%IU3WS_?@+2_%L{SG|>vX9T{WXfUlYZy1v%*4arApFf@M#JIAj!$Jun5l4JqM5b)C%|Eu!OUY8NK>RzsZy$y{8F=YieyNqNf1jXohzL$-61_My)JzweIb1%eItD* z{Qz+~zevBzimb^!XjE#HD=H%@D=H@{FRCP}CTexm z`lwA&TcWl_?TET5>XxYIdmrC>cJGC~y}g(8Zs^_E+u!@V-k0~jt@j-R>#xB9)^@7;a}`#bs%?w{0uXmo1ynCRl@$qhrRzl*g=$*%|Xv z%)Xd^#k>{scFcD%zr~8NJ!1RB#>Ebg9T7V+HZ!&`c2aC9R|oDJ_{P9L1|<%fJZR0Jt%GhI z^w6Nk2R%9H=|L|HdTG$EL3;-M9+wbzOx(!0gv+@82Y@k#Mj@t4KF6u&S2!}w3)Ka2k|{_FT}6M7^JNJvOXOc;`IOv0#yl!UZ| zi3y7nmM5H_aACs536~~Zp0GaQs)TD2u1naE(3-F@;l6|i5*|u;B;m1yCla1YcsAjM zgqIWcB)poiFX4;9(St`0&K^8&@chC5ud4I@O9Ju#c-gqR_O5FSii07FsDR2)K$eo4 z0~BSrP-F>;0s)GMh@yfhvK*B*F0b8Pd+)uw*44Fl*VVPYJszK*zCXSHh4=gQd_A6T zLtuB{AAxrO0f1?MnSj}Vd4L6gg#Z{J77!0e1mFM!KpG$mkON==@&J555ugN61}F!p z0F8hizyM$aU>9IN;2_{I;3(h>;2hur;1b{p;4$D0;0xdza1?MNa58Wza5``?FboI= zLV*#$NFV};1QLMBKoXDwqybZbOkg@NA1DQyfDT|E@Br`-@I3Gu@CNV}@HX%v@DcDS z@CEQy(Ac1PL7_pBL5V@QAVN@b5IKk%#0W|Yk_5E`jRYMGx)=0M@aW*B!OMdI!9O;Q z;LzakU`Q}5m>kRsE(_KN+k;1fHwSMG-X6R&`1j!5!LNcp27d>Q28{uY1N{V=4O$8c z0)arGpl}c#lmw!K%0UuP8^{gvg8ZO<&^FLP&|%O~&~eZ$&=b%LOTj{L1y}*rf^}d6xB=VK>{FSArm2!AX6aIAWI-&5C{YX!9fU+WC#hufTTfI zKr$dJAzH`?lQG1^Nv(3Kjqx3mXqx3R?~Xz=B{PSSTzUhJc}A@vuY~ z4n}~b!B)UBU@Kt?ST(Ex)(C5YHN%{+9#}8T0~>+uf$f7GfE|j!M5IJeBj^#S5l15) zM?8&q9`Q2bb;R3k_ynH`pADZ2pAY{9z6ibq4uV7B5kK5PKb%2u0z4T`f~Uaw za0y%nuYxP#^>8EH1UJLo@L~9R_(u4qNI+ynWaN)C1sORMxh?W!k>?{XMqZA* z7I`!BcI3Ut2a%s5zeIkE8Wj}~H7;sG)TF2>QPZPlM$L|bN2Nu{qa0DYqV6KbA^-?H zf`ceQ2oWNL7*T`JBN`AUL^HyQXhXCkIuU-vYQzv?Jz@m01+g8m6LAaiDSCYLl<4Wv zv!drlFOFUo4Tuhk21Tbu>!bUl*GKP+J{5f?`fBup=zpU>A;%*pA*UdxBj+IJA%8(G zLWcj4BgOpCA`y{PBpsQC%tU4(bCGPM5LtulLAsG%WFK-6xdu6m+<^QQc?@|Hc?Nk7 zc>#F|c?Ed~`8V$v#Vm;lkAcL%ei(cbVsJ5pnB`3gE*ln>pVt2*v zj@=h~F!pflvDg!_r(&PPO^5@>G2*0g&bU9~ZpQtGnul730-%CXAt*Qsg^EWdqVT9B z6cI&6WukIXd8h)E09Aq#qAE~rs12xHsQsuzsH3P8sPm{xsH>>!sGI1qXe2rdU4X7Y zuR`n5&1ffj9eM+L7kV#xKl%{*IQk^|4Eh}U4*EX&75Y8;1NsyC8)g({3}zf=HU^2w z!sKG|Fa;PMMt~{72r(i|BgTwr!L(v*m=25skx^UgNKX6xZ-|!3YBs>?d z#;?Y&!EeED#c#v!z#qmR!5_sR$6vu;#b3kU!2gB+8~+6Vj4*~UoiKwilQ5gGoDfI= z5P}F`LL#Anz#|k9N(toz5kW$b6O@EDLI=S?a1we5y#xkV&ygs3dRF`lO9Xo02vs&re1s7bI6C z%afJKs$_L?eR5;6Ik_ddHF;C=#pL(NUy0+16N!_F(}**Pvx#uxk9&|PAvO~`iC$tK zagex{xQ@7yxQV!vxQqA)@i6fW@jUSo@hb5K@fPtR@j3Ao@h$Nm;=iO(q%oxNqzR-M zq`9O8q(!79BoHZ#1R=plv7~g;N>UC6E7_?@~Ubd`kID8B3W$nNFESnM+wfSx8w-SxNy@;1mQUhJv9aQt*@{N-?FL zVxu@IE{ccZr>v!{qim#XqWng=Nu5H4Qe&t|)GTTal}oLp>Z$cq8`VMWrn;y;YCm<5 zx`w)qx|4cLdWCwOdYgKe`WN*f^*wDWZ5|CqL(pine43J`qN!W+85e4`Y8Go`ds<~`Xc&L zdLTWV4yD8C2zm@Xj*h42(gpNNdL6xiZlX8St#li`hu%x~(0%ki`T+d^{SG65v5*nM z2xmYUa0Y^bWKe!22iXi3BcD;gs9?w$3Pv?U#n3V88Ae7EqnXjka5IJ(BaF?At&HuA zJ&gT~gN!4LV~h)on~cYdPmC{&@2LT)<5DN2PD-7cIwLhO6_^^F8j>283QmQlMx;ij zB2u}j?WucHU#2ZcOG&Fu8&2Dsb}H>|+Pkz5Y2TTXnA4eyn4!!tW;heVL@~3Nxy(Ff z0h7lpVwN(?nUzc_vx-^GtYvDLI;Mx|XAUseFo&7znZGhem|K|JnY);~nfsUrnTMH2 znfICBS4>_3UXi{+u%dQ_bH(}<2Uq;L;#GQJdR#g_Ju5vYot2)SUYO2HFG?>>FHf&b z|Is~2*QFcM8`4eb?=wbcjL8_6F(D&9gOWkZU}P{ej2Rsn_KdEKp3JG43o|1!qcV}1 zahaIR#7uluVQ*$1W?yIDXTM^Qy9mjClXo@mdETqMw|SrQzU7b3ACo^le_sAC`HSI&-%8w<^aErqRx1BH7F zuNU4gd|3Fn@M+<@!ViU?3O{qla)09f%$>}Q;Kp$ixHxVSm&i@$vbcQi4+OxiPQeYq-PQ_1vA@L)@d>6Wr6>bKHyE+uVEH2i!;8r`#9ZSG=*jrMx&E zo|nuc^C-M@-b!8$kHzEjig{(ca$Xy+o9E;8^H%eQc;88Cnys9z?uSyKqk-# zngkAkOW+as1*-)^g7t!pg5L$Z1$zYtieieAiikzzB5KjGqRT~(i=Gv|EP7M)zUbeg z|BAjAk18HhJhym3@uK3T#eu~^#UaJv#n9r2;>hBp;?!bAvAKA4@xJ0y#eWxnDhVi= zRx-0>PRaa|g(XW$mX`oZB1+ID#FCT}S_z|MP06N`9VNR(fJXpQKC=%(nl=$_~=(QDB= z(Ff5d(HGIT%1M<|DyLP>tW;LkS2kB#D{YmXm99!prN45Za&_g=%E#hK;@RTG;$>oh zI9MDi4i}Tf1!AMPRoo+Xi+$pL@oMpqc%68Qc&m83c%S&V_>}mp_=5Pd_^SA>_>uUj z_=Whj_^tS}_?u+3WQ=68WQJt6WS(S!BuavnBumH=sw7R4E?FtbmIx%pl2S>zq*c-@ z@ko4BSlH$ zrC2FmN|k0v^P~k*p0r3>DiuoQQnhrI)F3rVo21RsPN`e!llDtjONXTEq&uX$rTe4@ zrN^WvrDvq)q}QeQrO%`JF zUPhH=$g*U)vOHOVj4Kn$TS-Z?GbIM#Yw`^FpUbay-A`g~F$%*n5 zIZd7_Um?$wXUkdg{2z2*E?3G`afCTR6W0XVRdvhzB;{nWpz$9yP8wY zt^U!gH-|wXM3d+EKl;`cn1hnz=PeHJln%O@GZm%}C8}HJfX; z)*PrgSaYc6NX^BXOEs5kuGZYG`K#vdn#Zb9swt|es%fejswJwWs%5G`6--SS z_0;-n2Wr>U4%cp|-Bi1|_E_!7+S9dXYtPqSs=ZQst@cLkpS5>t@6~>*TU>{$P&T(I!9fk7OF*RiCUqqQP-(8YQK7q`lR}T z`m*|(`lkB6`l0%f`lqdBQLr@5%Pthu4NrMaWI zr+KaUr1?+tMLSVDRXbffOFLh?P`g;WR14LjwQ1UP?MiKqmaXMzxmtm?L@U&av<9tF zYtovv7HzAxUE8U3XuGv8ty{ZGdtLi=)zVdjRi&$1R;^!ka@FHiZ&tlu_3x@5GArFA z-4xw4-3;9<-5gz@4x|gyL3EM2XkDxhrOVT)bd5Tz&Zg_sb?H1hzivRcTDMkrUOz?; z)I;6POAN~mNJE?fZHPA{8t{f>1IdtLpcxp3G(&~KV%TK3 zVE9nKs2*F-sn^uI>IdrA)DPFMuisj~r+#1kf%-%BN9vE&U#`DV|7ZQ(`iJ$8>z~!X zXqesrX+SmL8j>1F4U`6ELqF1^?P1Bl| zG=(=sHbpnZHldsFP03BTMk){ST0-cTb@{+TV7e-T0U7mTfVi7ZW+@8Y+2c& zZ85djTh_J=w`^|N*K)Dta?AaeM=eiUp0~VddEfGH%O~pu>l|yC6=IFBMp=>8I4j1Q zXvJH9GzG1B)&eWn%C{C-OReSBN~^>ww<@gFR=ahJ^_um+)+Mb;ttG9Et*cuPww`J| z+j^n(QtO|sf44qqect-2^=<3>w$W|l+a|V6Zky3IyKP?Ef;LQBPFqo1MVq)y)~0Av zx27jiw(V@YVH;zcY+GOh+n}}>TaqoymSZcj32hZNv8~EhZL77ZZ5CU%&13V~ z`fY1%>ueisn{0b+r)>9Z4{VQYPi-%3uWj#aA8em&Uu@soXSdI5U(mj=eR2D;c0hYj zJE%RZ9o!CWr?!{1TiZ9aUuyraV@XGR2fL%DL*LQRVd^k5S{l?X+}m?cCFOvh#N5 z-OeYSAM6wDlkD^Di|xzofp(BR%nq@`>v-Qaw=1HH-X-g5?;7g*t!r!7j;>u@e|A0X zdeQZ|>s{A}u8&TPGsVepGMyRD94Fh!aTYpd&L*eBIp|#LT<6^A9C2=OZg=i-9(SH} zo^hUYUUXh|UUS}X-s&FJy|_EEo7b)H_IK~;KH7bv`*io&?rYumy8r5a*!{TsY4`K) zm))Pczx9mn8Qb$y&%_>ZPh1bShtNapN$E-JN$*+NliicsW9Zr1bEW4_&-0$|uFPvDy>)%>9o;*ocYLq7SKVvvwe@!PcJ=o3x_f=S{k^MuxA*Sq-QByd_h9dl-s8Qe zde8Qr?|s($ulr|rkUPpvbZ5JZ+?8&zTk5WL*SR%rk9&=Ki+ihkn|p`*u=|+%r2CBf zy!)d2q5Gx#mHVyxvuBiNi6`6x_CP!^55|M@BzZ_4nkUt>!js`C^zc2!o-$9lN8~Yk zx;#A|x5ww{^9*=KJX<{5J-a-+J$pT;J$F4%JkLEZJ+D1qy`#JV-f`Xu-k-g*ymP(t zy}x)tUZ@xDMR;Sp30|Bx$xHI4c+0$f-jm*I-kaXr-h18$-oL${d;z|neY1RXeM^18 zzHncx5A93v;e1IxqA$nC^_BZ7ed~Q&eMfy~d{=!Bd{2DOeXo4)egFFY^L_Dy{Ct0f zU*WIu>;27stKa3{fn)2h)eRLxLgE zP~DJW$UM|FG%&PgXn1JD(59iyL)(T94jmafK6Gm6?9hdw%R^U(z6>uPrVdvPYla(# V&Hv-u0RjJ;Q;+^;2U{{W>b044wc delta 20424 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

`vL2avUi> zr)i}PNz+X;OS4QHk!F|XnC6n^mgbx0pB9)FlC~%9yR>6z$J0)wk5ioiE0xEPt=^KGf{V<{zSux#uH5^ zdQVKBC{65{cxd8-42=w@jHry#jJk}*jOL8ijQ28TWPF@4J7aFff{aBOOEQ*atk2kz zu{~o)#_o)L83!^BX57i7Gqo}m`k98ACYffLHktOBj+ri*ZkhR+U6~s*cVr&SJfC?n z^JeCgEHaDE(#q1!GRQK_8lGj5Wu0Y{H7aXNR$x|8R!CM%*2Juwth}tktg@`iteUL4 ztj?^NSu3(uXRXWHkhM8$Th`}UJF|9Y?aMllbw2A-)|ISlS=X~}W&NCWH|xG4>rvK| ztY5O#vmLW1;3UVq>^<2xazKu0j(1LQPFPMvPE<}(PF7A%PF_wyPEk%tPGe4Mjv}Wc zXG+coIn#4K%Gr{0Jm+%G&77Zd?&dtmd6x5A&L25{=Df(ykLO;_y`FnB_ov+Zxes%n|y}V(0rg>(0mU-5B9(e(I$$4pc z8F|@xd3l9-C3)p}Re7~}4S65t&B&XXH!E*;-rT$ed5iOw=Jn()&s&*yAn!&#lRqLq zBEKg8ll<-ZXY!xszs!GCKor0Nu|TI_Xn|gVL4jd`ae-ZdbAeldN5PnaaRq(_0g8fx zg3f}O1#=4)6f7=SRo1{5Y1CKqNGRurPb&cd06a|-7c zE+|}D*j>21aAo24!X1VC3l9{YC_GzuuJB^vwZiL#w+eqMd|m{Lbc+m%jEYQ)%!{mw zY>MoQoQhnFMizw^MHWRD#TLaCB^IR=Dbk827G)LX6y+76qGd&27yVQ$6gwBk7uOcg zD&APUqxj3>J;nQqzb!she5Uw^;`7B9i!T@7Eq+w|wD{NJKZ^eQ@?78dsW7np`@uG_y2E zQJPm;TUuY*Uix9_%+gtT}f>tFKgFtA1X?)&$qY z)#TLV*A&&1)>PC~*VNTC)^ydpU-Mzj^qP-q6d%{ju9;gizh+0x#hTZ(!)m>1GiqCE zr`Ard{it?U?cCb=wTo(()UL1HRJ*%&U+sa~L$%-5epmab_Rl(4N7r$6Vx3mqkUG6O zgF3^ypt{Dod3D`&8|wDg9jH56ccJb<-J`nS>t5Eqs(Vw<)oa#k*AJ=Jt2d}OtT(PV zueYjqQq+6YkEsu=52+8YkElZLI|5wAH28{;o zhM^7m4TcRS4Q36N4IT}n8^$*HH260JHH0>dZ-{D$X((xEXn4P2dBc{5gAL~zZZ|w? zc--)`;bp_04X+xF8m$`L8r>U5HhMM&Hik5YH%2xpVj3qj<~5c#Ry0;OHa9977dNhL zT-W$%d@&zg*yBAQy8)-|1Jy54l7>1NaIreB)LW~P~MR%=#o z)@mNotk*oO*~nA8P)!MZLwgC9Wl_CA%f3 zC9kErrKY8}rM{)3rL$#nOIOQBEi+qYwJdE}*3#Y5+p?);bIX>NZ7ug(UbOtt^0MWx zR?Sx9R+CoKRxMCR=3u`)~MFl*7(+>*3{NLt%qCBv??yNUT(eCdaL#4)_biF zTA#JPY*TMDYqM(`-!`GGrfq85oVHKe=C;jmTiLdz?bEi6ZCl#5wSCogw(V-$^|qUB zx7&Vcd*1eY+sn3BZExDScCmd>yL!7}yLr1+yG^@&yIZ?Q`{?$u?c>@r+vm3LYd_Y0 zqWyIH5A7G)FSS2v|GoW)_5q*AFuYLq0YQ<{lCh+;MV+=&g+X8c(ZpW{z% z*o{9;;ed1=zwv(szo36zx`p4czlY!Ye}X?^;yEIaE^`%;}ihv8m&`j-NX9J54&R zJ8e2$J4bhp?eyvN?+omW?M&`W>&)oP?kwso?X2jm?yT)x)On=yx6U_{!Q{b{hfLO+ zJZ!S@WXs7T3MSi4cAV@y*>ke*&}!xQ#_|+PbryFJEcLjn*gEeDsJlEUFg3|ng9O)3b8`D diff --git a/PokemonPhoneBook/PokemonPhoneBook/PhoneBookViewController.swift b/PokemonPhoneBook/PokemonPhoneBook/PhoneBookViewController.swift new file mode 100644 index 0000000..41dd305 --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/PhoneBookViewController.swift @@ -0,0 +1,29 @@ +// +// PhoneBookViewController.swift +// PokemonPhoneBook +// +// Created by YangJeongMu on 12/11/24. +// + +import UIKit + +class PhoneBookViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/PokemonPhoneBook/PokemonPhoneBook/PhoneTableViewCell.swift b/PokemonPhoneBook/PokemonPhoneBook/PhoneTableViewCell.swift new file mode 100644 index 0000000..87f7cab --- /dev/null +++ b/PokemonPhoneBook/PokemonPhoneBook/PhoneTableViewCell.swift @@ -0,0 +1,71 @@ +// +// PhoneTableViewCell.swift +// PokemonPhoneBook +// +// Created by YangJeongMu on 12/11/24. +// + +import UIKit + +class PhoneTableViewCell: UITableViewCell { + + + let profileImageView = UIImageView() + let nameLabel = UILabel() + let phoneLabel = UILabel() + + + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + configureUI() + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + + + } + + private func configureUI() { + self.contentView.addSubview(profileImageView) + self.contentView.addSubview(nameLabel) + self.contentView.addSubview(phoneLabel) + + nameLabel.text = "pokemom" + phoneLabel.text = "010-0000-0000" + phoneLabel.textAlignment = .right + profileImageView.layer.cornerRadius = 25 + profileImageView.layer.borderColor = UIColor.lightGray.cgColor + profileImageView.layer.borderWidth = 1 + + + profileImageView.snp.makeConstraints{ make in + make.leading.equalToSuperview().offset(16) + make.top.equalToSuperview().offset(16) + make.width.equalTo(50) + make.height.equalTo(50) + } + + nameLabel.snp.makeConstraints{ make in + make.leading.equalTo(profileImageView.snp.trailing).offset(16) + make.top.equalToSuperview().offset(16) + make.width.equalTo(100) + make.height.equalTo(50) + + } + + phoneLabel.snp.makeConstraints{ make in + + make.trailing.equalToSuperview().offset(-16) + make.top.equalToSuperview().offset(16) + make.width.equalTo(150) + make.height.equalTo(50) + } + + } + + + +} diff --git a/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift index da36af9..139aebb 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift +++ b/PokemonPhoneBook/PokemonPhoneBook/SceneDelegate.swift @@ -17,7 +17,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) - window?.rootViewController = ViewController() + window?.rootViewController = UINavigationController(rootViewController: ViewController()) window?.makeKeyAndVisible() } diff --git a/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift index 3ac979a..afed5ce 100644 --- a/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift +++ b/PokemonPhoneBook/PokemonPhoneBook/ViewController.swift @@ -10,8 +10,7 @@ import SnapKit class ViewController: UIViewController { - - // MARK: - UI Componetns + // MARK: - UI Components private let titleLabel: UILabel = { let label = UILabel() label.text = "친구 목록" @@ -28,32 +27,74 @@ class ViewController: UIViewController { return button }() + private let tableView: UITableView = { + let tableView = UITableView() + tableView.separatorStyle = .singleLine + tableView.rowHeight = 80 // 셀 높이 설정 + return tableView + }() + + + + + + + + // MARK: - Lifecycle override func viewDidLoad() { super.viewDidLoad() setupUI() + // 데이터 소스 연결 + tableView.register(PhoneTableViewCell.self, forCellReuseIdentifier: "PhoneTableViewCell") + tableView.dataSource = self + + addButton.addTarget(self, action: #selector(buttonClicked), for: .touchDown) } - // MARK: -Setup UI + + @objc + private func buttonClicked() { + print("버튼 클릭") + } + + // MARK: - Setup UI private func setupUI() { view.backgroundColor = .white // Add Components view.addSubview(titleLabel) view.addSubview(addButton) + view.addSubview(tableView) // 테이블 뷰 추가 // Layout Using SnapKit titleLabel.snp.makeConstraints { make in make.top.equalTo(view.safeAreaLayoutGuide.snp.top).offset(16) make.centerX.equalToSuperview() - } - addButton.snp.makeConstraints{ make in + addButton.snp.makeConstraints { make in make.centerY.equalTo(titleLabel) make.trailing.equalToSuperview().inset(16) } + tableView.snp.makeConstraints { make in + make.top.equalTo(titleLabel.snp.bottom).offset(16) + make.leading.trailing.bottom.equalToSuperview() // 하단 제약 조건 추가 + } } } +// MARK: - UITableViewDataSource +extension ViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 3 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "PhoneTableViewCell") as! + PhoneTableViewCell + + return cell + } +} From 1a0ec34286d13bb0819a377ac31abdecbf5b90b3 Mon Sep 17 00:00:00 2001 From: Your jeongmu <105642388+jeongmuya@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:34:55 +0900 Subject: [PATCH 7/7] lv2~3 --- .../UserInterfaceState.xcuserstate | Bin 51289 -> 58029 bytes .../PhoneBookViewController.swift | 120 ++++++++++++++++-- .../PokemonPhoneBook/ViewController.swift | 3 + 3 files changed, 111 insertions(+), 12 deletions(-) diff --git a/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate b/PokemonPhoneBook/PokemonPhoneBook.xcodeproj/project.xcworkspace/xcuserdata/mooya.xcuserdatad/UserInterfaceState.xcuserstate index 7cc6d138643dd22e569d7bfb98004214ef4ea32d..3c64cf3cd04af013ef0feea68712c22631eb84a4 100644 GIT binary patch delta 29392 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 WIUatsF=E8{;T*efxctA^KmNa*ZxlrU delta 25006 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