From 587dcc9615e992e35ca7ff4397abf1d0d3e2517c Mon Sep 17 00:00:00 2001 From: taminayo Date: Mon, 6 Nov 2017 22:56:08 +0900 Subject: [PATCH 1/2] TaehyeonKim Assignment --- .../AppIcon.appiconset/Contents.json | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json b/TaehyeonKim/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file From 9550fcfe45e910f772a96afaa5b16556cc0de486 Mon Sep 17 00:00:00 2001 From: taminayo Date: Mon, 6 Nov 2017 22:58:37 +0900 Subject: [PATCH 2/2] taehyeonKim Assignment --- .../BareBasic.xcodeproj/project.pbxproj | 529 ++++++++++++ .../contents.xcworkspacedata | 7 + .../BareBasic/BareBasic/AppDelegate.swift | 46 + .../AppIcon.appiconset/Contents.json | 98 +++ .../Base.lproj/LaunchScreen.storyboard | 25 + .../BareBasic/Base.lproj/Main.storyboard | 42 + TaehyeonKim/BareBasic/BareBasic/Info.plist | 45 + .../BareBasic/BareBasic/ViewController.swift | 25 + .../HelloiPhone.xcodeproj/project.pbxproj | 557 ++++++++++++ .../contents.xcworkspacedata | 7 + .../HelloiPhone/HelloiPhone/AppDelegate.swift | 46 + .../AppIcon.appiconset/Contents.json | 93 ++ .../Base.lproj/LaunchScreen.storyboard | 25 + .../HelloiPhone/Base.lproj/Main.storyboard | 49 ++ .../HelloiPhone/HelloiPhone/Info.plist | 45 + .../HelloiPhone/ViewController.swift | 29 + .../MeetingRooms.xcodeproj/project.pbxproj | 329 ++++++++ .../contents.xcworkspacedata | 7 + .../MeetingRooms/AppDelegate.swift | 46 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../MeetingRooms/Base.lproj/Main.storyboard | 56 ++ .../MeetingRooms/MeetingRooms/Info.plist | 45 + .../MeetingRoomListViewController.swift | 123 +++ .../MeetingRooms/ViewController.swift | 25 + .../project.pbxproj | 332 ++++++++ .../contents.xcworkspacedata | 7 + .../MeetingRoomsDynamic/AppDelegate.swift | 55 ++ .../AppIcon.appiconset/Contents.json | 73 ++ .../Assets.xcassets/Contents.json | 6 + .../building_tab.imageset/Contents.json | 21 + .../building_tab.imageset/building_tab.png | Bin 0 -> 6506 bytes .../equipment_tab.imageset/Contents.json | 21 + .../equipment_tab.imageset/equipment_tab.png | Bin 0 -> 5443 bytes .../location.imageset/Contents.json | 21 + .../location.imageset/location.png | Bin 0 -> 3383 bytes .../Base.lproj/LaunchScreen.storyboard | 27 + .../Base.lproj/Main.storyboard | 792 ++++++++++++++++++ .../BranchListViewController.swift | 72 ++ .../MeetingRoomsDynamic/DataCenter.swift | 165 ++++ .../EquipmentsDefault.plist | 30 + .../EquipmentsListViewController.swift | 115 +++ .../MeetingRoomsDynamic/Info.plist | 47 ++ .../MeetingRoomsListController.swift | 179 ++++ .../ReservationListViewController.swift | 116 +++ .../ReserveRoomViewController.swift | 162 ++++ .../RoomInfoViewController.swift | 100 +++ .../ServiceListViewController.swift | 49 ++ .../TintColorViewController.swift | 75 ++ TaehyeonKim/MeetingRoomsDynamic/building.png | Bin 0 -> 11950 bytes TaehyeonKim/MeetingRoomsDynamic/equipment.png | Bin 0 -> 17736 bytes TaehyeonKim/MeetingRoomsDynamic/location.png | Bin 0 -> 3383 bytes .../MeetingRooms.xcodeproj/project.pbxproj | 296 +++++++ .../contents.xcworkspacedata | 7 + .../MeetingRooms/AppDelegate.swift | 46 + .../4347286612_11577182f1_o.jpg | Bin 0 -> 28131 bytes .../Contents.json | 21 + .../AppIcon.appiconset/Contents.json | 68 ++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 27 + .../MeetingRooms/Base.lproj/Main.storyboard | 267 ++++++ .../MeetingRooms/MeetingRooms/Info.plist | 47 ++ .../MeetingRooms/ViewController.swift | 25 + .../MoneyConverter.xcodeproj/project.pbxproj | 533 ++++++++++++ .../contents.xcworkspacedata | 7 + .../MoneyConverter/AppDelegate.swift | 46 + .../AppIcon.appiconset/Contents.json | 98 +++ .../Base.lproj/LaunchScreen.storyboard | 25 + .../MoneyConverter/Base.lproj/Main.storyboard | 79 ++ .../MoneyConverter/MoneyConverter/Info.plist | 45 + .../MoneyConverter/MoneyConverter/Money.swift | 62 ++ .../MoneyConverter/ViewController.swift | 51 ++ TaehyeonKim/README.text | 12 + .../Contents.swift | 182 ++++ .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + .../session2.playground/Contents.swift | 632 ++++++++++++++ .../session2.playground/contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + 78 files changed, 7393 insertions(+) create mode 100644 TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/BareBasic/BareBasic/AppDelegate.swift create mode 100644 TaehyeonKim/BareBasic/BareBasic/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TaehyeonKim/BareBasic/BareBasic/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/BareBasic/BareBasic/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/BareBasic/BareBasic/Info.plist create mode 100644 TaehyeonKim/BareBasic/BareBasic/ViewController.swift create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/AppDelegate.swift create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/Info.plist create mode 100644 TaehyeonKim/HelloiPhone/HelloiPhone/ViewController.swift create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/AppDelegate.swift create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/Info.plist create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/MeetingRoomListViewController.swift create mode 100644 TaehyeonKim/MeetingRooms/MeetingRooms/ViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsDefault.plist create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift create mode 100644 TaehyeonKim/MeetingRoomsDynamic/building.png create mode 100644 TaehyeonKim/MeetingRoomsDynamic/equipment.png create mode 100644 TaehyeonKim/MeetingRoomsDynamic/location.png create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/AppDelegate.swift create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/Contents.json create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Info.plist create mode 100644 TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/ViewController.swift create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/AppDelegate.swift create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/Info.plist create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/Money.swift create mode 100644 TaehyeonKim/MoneyConverter/MoneyConverter/ViewController.swift create mode 100644 TaehyeonKim/README.text create mode 100644 TaehyeonKim/SwiftFunctionType.playground/Contents.swift create mode 100644 TaehyeonKim/SwiftFunctionType.playground/contents.xcplayground create mode 100644 TaehyeonKim/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 TaehyeonKim/session2.playground/Contents.swift create mode 100644 TaehyeonKim/session2.playground/contents.xcplayground create mode 100644 TaehyeonKim/session2.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.pbxproj b/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.pbxproj new file mode 100644 index 0000000..05da79c --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.pbxproj @@ -0,0 +1,529 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + B0500D201FAC4363002E177E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D1F1FAC4363002E177E /* AppDelegate.swift */; }; + B0500D221FAC4363002E177E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D211FAC4363002E177E /* ViewController.swift */; }; + B0500D251FAC4363002E177E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D231FAC4363002E177E /* Main.storyboard */; }; + B0500D271FAC4363002E177E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B0500D261FAC4363002E177E /* Assets.xcassets */; }; + B0500D2A1FAC4363002E177E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D281FAC4363002E177E /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B0500D311FAC4364002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D141FAC4363002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D1B1FAC4363002E177E; + remoteInfo = BareBasic; + }; + B0500D3C1FAC4364002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D141FAC4363002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D1B1FAC4363002E177E; + remoteInfo = BareBasic; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + B0500D1C1FAC4363002E177E /* BareBasic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BareBasic.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D1F1FAC4363002E177E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B0500D211FAC4363002E177E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + B0500D241FAC4363002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B0500D261FAC4363002E177E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B0500D291FAC4363002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B0500D2B1FAC4363002E177E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B0500D301FAC4364002E177E /* BareBasicTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BareBasicTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D3B1FAC4364002E177E /* BareBasicUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BareBasicUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B0500D191FAC4363002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D2D1FAC4364002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D381FAC4364002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B0500D131FAC4363002E177E = { + isa = PBXGroup; + children = ( + B0500D1E1FAC4363002E177E /* BareBasic */, + B0500D1D1FAC4363002E177E /* Products */, + ); + sourceTree = ""; + }; + B0500D1D1FAC4363002E177E /* Products */ = { + isa = PBXGroup; + children = ( + B0500D1C1FAC4363002E177E /* BareBasic.app */, + B0500D301FAC4364002E177E /* BareBasicTests.xctest */, + B0500D3B1FAC4364002E177E /* BareBasicUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + B0500D1E1FAC4363002E177E /* BareBasic */ = { + isa = PBXGroup; + children = ( + B0500D1F1FAC4363002E177E /* AppDelegate.swift */, + B0500D211FAC4363002E177E /* ViewController.swift */, + B0500D231FAC4363002E177E /* Main.storyboard */, + B0500D261FAC4363002E177E /* Assets.xcassets */, + B0500D281FAC4363002E177E /* LaunchScreen.storyboard */, + B0500D2B1FAC4363002E177E /* Info.plist */, + ); + path = BareBasic; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B0500D1B1FAC4363002E177E /* BareBasic */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D441FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasic" */; + buildPhases = ( + B0500D181FAC4363002E177E /* Sources */, + B0500D191FAC4363002E177E /* Frameworks */, + B0500D1A1FAC4363002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = BareBasic; + productName = BareBasic; + productReference = B0500D1C1FAC4363002E177E /* BareBasic.app */; + productType = "com.apple.product-type.application"; + }; + B0500D2F1FAC4364002E177E /* BareBasicTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D471FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasicTests" */; + buildPhases = ( + B0500D2C1FAC4364002E177E /* Sources */, + B0500D2D1FAC4364002E177E /* Frameworks */, + B0500D2E1FAC4364002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500D321FAC4364002E177E /* PBXTargetDependency */, + ); + name = BareBasicTests; + productName = BareBasicTests; + productReference = B0500D301FAC4364002E177E /* BareBasicTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + B0500D3A1FAC4364002E177E /* BareBasicUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D4A1FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasicUITests" */; + buildPhases = ( + B0500D371FAC4364002E177E /* Sources */, + B0500D381FAC4364002E177E /* Frameworks */, + B0500D391FAC4364002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500D3D1FAC4364002E177E /* PBXTargetDependency */, + ); + name = BareBasicUITests; + productName = BareBasicUITests; + productReference = B0500D3B1FAC4364002E177E /* BareBasicUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B0500D141FAC4363002E177E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = "Taehyeon Kim"; + TargetAttributes = { + B0500D1B1FAC4363002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + }; + B0500D2F1FAC4364002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D1B1FAC4363002E177E; + }; + B0500D3A1FAC4364002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D1B1FAC4363002E177E; + }; + }; + }; + buildConfigurationList = B0500D171FAC4363002E177E /* Build configuration list for PBXProject "BareBasic" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B0500D131FAC4363002E177E; + productRefGroup = B0500D1D1FAC4363002E177E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B0500D1B1FAC4363002E177E /* BareBasic */, + B0500D2F1FAC4364002E177E /* BareBasicTests */, + B0500D3A1FAC4364002E177E /* BareBasicUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B0500D1A1FAC4363002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D2A1FAC4363002E177E /* LaunchScreen.storyboard in Resources */, + B0500D271FAC4363002E177E /* Assets.xcassets in Resources */, + B0500D251FAC4363002E177E /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D2E1FAC4364002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D391FAC4364002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B0500D181FAC4363002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D221FAC4363002E177E /* ViewController.swift in Sources */, + B0500D201FAC4363002E177E /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D2C1FAC4364002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D371FAC4364002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B0500D321FAC4364002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D1B1FAC4363002E177E /* BareBasic */; + targetProxy = B0500D311FAC4364002E177E /* PBXContainerItemProxy */; + }; + B0500D3D1FAC4364002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D1B1FAC4363002E177E /* BareBasic */; + targetProxy = B0500D3C1FAC4364002E177E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B0500D231FAC4363002E177E /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D241FAC4363002E177E /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B0500D281FAC4363002E177E /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D291FAC4363002E177E /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B0500D421FAC4364002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B0500D431FAC4364002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B0500D451FAC4364002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasic/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasic"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B0500D461FAC4364002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasic/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasic"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B0500D481FAC4364002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasicTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasicTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BareBasic.app/BareBasic"; + }; + name = Debug; + }; + B0500D491FAC4364002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasicTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasicTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/BareBasic.app/BareBasic"; + }; + name = Release; + }; + B0500D4B1FAC4364002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasicUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasicUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = BareBasic; + }; + name = Debug; + }; + B0500D4C1FAC4364002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = BareBasicUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.BareBasicUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = BareBasic; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B0500D171FAC4363002E177E /* Build configuration list for PBXProject "BareBasic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D421FAC4364002E177E /* Debug */, + B0500D431FAC4364002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D441FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D451FAC4364002E177E /* Debug */, + B0500D461FAC4364002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D471FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasicTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D481FAC4364002E177E /* Debug */, + B0500D491FAC4364002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D4A1FAC4364002E177E /* Build configuration list for PBXNativeTarget "BareBasicUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D4B1FAC4364002E177E /* Debug */, + B0500D4C1FAC4364002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B0500D141FAC4363002E177E /* Project object */; +} diff --git a/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a2f94f8 --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/BareBasic/BareBasic/AppDelegate.swift b/TaehyeonKim/BareBasic/BareBasic/AppDelegate.swift new file mode 100644 index 0000000..9f5af2a --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// BareBasic +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TaehyeonKim/BareBasic/BareBasic/Assets.xcassets/AppIcon.appiconset/Contents.json b/TaehyeonKim/BareBasic/BareBasic/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/BareBasic/BareBasic/Base.lproj/LaunchScreen.storyboard b/TaehyeonKim/BareBasic/BareBasic/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/BareBasic/BareBasic/Base.lproj/Main.storyboard b/TaehyeonKim/BareBasic/BareBasic/Base.lproj/Main.storyboard new file mode 100644 index 0000000..6760d6c --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/Base.lproj/Main.storyboard @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/BareBasic/BareBasic/Info.plist b/TaehyeonKim/BareBasic/BareBasic/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/BareBasic/BareBasic/ViewController.swift b/TaehyeonKim/BareBasic/BareBasic/ViewController.swift new file mode 100644 index 0000000..8310dce --- /dev/null +++ b/TaehyeonKim/BareBasic/BareBasic/ViewController.swift @@ -0,0 +1,25 @@ +// +// ViewController.swift +// BareBasic +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.pbxproj b/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e7fcb6a --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.pbxproj @@ -0,0 +1,557 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + B0500D5A1FAC4714002E177E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D591FAC4714002E177E /* AppDelegate.swift */; }; + B0500D5C1FAC4714002E177E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D5B1FAC4714002E177E /* ViewController.swift */; }; + B0500D5F1FAC4714002E177E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D5D1FAC4714002E177E /* Main.storyboard */; }; + B0500D611FAC4714002E177E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B0500D601FAC4714002E177E /* Assets.xcassets */; }; + B0500D641FAC4714002E177E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D621FAC4714002E177E /* LaunchScreen.storyboard */; }; + B0500D6F1FAC4714002E177E /* HelloiPhoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D6E1FAC4714002E177E /* HelloiPhoneTests.swift */; }; + B0500D7A1FAC4714002E177E /* HelloiPhoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D791FAC4714002E177E /* HelloiPhoneUITests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B0500D6B1FAC4714002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D4E1FAC4714002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D551FAC4714002E177E; + remoteInfo = HelloiPhone; + }; + B0500D761FAC4714002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D4E1FAC4714002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D551FAC4714002E177E; + remoteInfo = HelloiPhone; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + B0500D561FAC4714002E177E /* HelloiPhone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloiPhone.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D591FAC4714002E177E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B0500D5B1FAC4714002E177E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + B0500D5E1FAC4714002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B0500D601FAC4714002E177E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B0500D631FAC4714002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B0500D651FAC4714002E177E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B0500D6A1FAC4714002E177E /* HelloiPhoneTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HelloiPhoneTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D6E1FAC4714002E177E /* HelloiPhoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelloiPhoneTests.swift; sourceTree = ""; }; + B0500D701FAC4714002E177E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B0500D751FAC4714002E177E /* HelloiPhoneUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HelloiPhoneUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D791FAC4714002E177E /* HelloiPhoneUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelloiPhoneUITests.swift; sourceTree = ""; }; + B0500D7B1FAC4714002E177E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B0500D531FAC4714002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D671FAC4714002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D721FAC4714002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B0500D4D1FAC4714002E177E = { + isa = PBXGroup; + children = ( + B0500D581FAC4714002E177E /* HelloiPhone */, + B0500D6D1FAC4714002E177E /* HelloiPhoneTests */, + B0500D781FAC4714002E177E /* HelloiPhoneUITests */, + B0500D571FAC4714002E177E /* Products */, + ); + sourceTree = ""; + }; + B0500D571FAC4714002E177E /* Products */ = { + isa = PBXGroup; + children = ( + B0500D561FAC4714002E177E /* HelloiPhone.app */, + B0500D6A1FAC4714002E177E /* HelloiPhoneTests.xctest */, + B0500D751FAC4714002E177E /* HelloiPhoneUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + B0500D581FAC4714002E177E /* HelloiPhone */ = { + isa = PBXGroup; + children = ( + B0500D591FAC4714002E177E /* AppDelegate.swift */, + B0500D5B1FAC4714002E177E /* ViewController.swift */, + B0500D5D1FAC4714002E177E /* Main.storyboard */, + B0500D601FAC4714002E177E /* Assets.xcassets */, + B0500D621FAC4714002E177E /* LaunchScreen.storyboard */, + B0500D651FAC4714002E177E /* Info.plist */, + ); + path = HelloiPhone; + sourceTree = ""; + }; + B0500D6D1FAC4714002E177E /* HelloiPhoneTests */ = { + isa = PBXGroup; + children = ( + B0500D6E1FAC4714002E177E /* HelloiPhoneTests.swift */, + B0500D701FAC4714002E177E /* Info.plist */, + ); + path = HelloiPhoneTests; + sourceTree = ""; + }; + B0500D781FAC4714002E177E /* HelloiPhoneUITests */ = { + isa = PBXGroup; + children = ( + B0500D791FAC4714002E177E /* HelloiPhoneUITests.swift */, + B0500D7B1FAC4714002E177E /* Info.plist */, + ); + path = HelloiPhoneUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B0500D551FAC4714002E177E /* HelloiPhone */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D7E1FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhone" */; + buildPhases = ( + B0500D521FAC4714002E177E /* Sources */, + B0500D531FAC4714002E177E /* Frameworks */, + B0500D541FAC4714002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HelloiPhone; + productName = HelloiPhone; + productReference = B0500D561FAC4714002E177E /* HelloiPhone.app */; + productType = "com.apple.product-type.application"; + }; + B0500D691FAC4714002E177E /* HelloiPhoneTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D811FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhoneTests" */; + buildPhases = ( + B0500D661FAC4714002E177E /* Sources */, + B0500D671FAC4714002E177E /* Frameworks */, + B0500D681FAC4714002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500D6C1FAC4714002E177E /* PBXTargetDependency */, + ); + name = HelloiPhoneTests; + productName = HelloiPhoneTests; + productReference = B0500D6A1FAC4714002E177E /* HelloiPhoneTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + B0500D741FAC4714002E177E /* HelloiPhoneUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500D841FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhoneUITests" */; + buildPhases = ( + B0500D711FAC4714002E177E /* Sources */, + B0500D721FAC4714002E177E /* Frameworks */, + B0500D731FAC4714002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500D771FAC4714002E177E /* PBXTargetDependency */, + ); + name = HelloiPhoneUITests; + productName = HelloiPhoneUITests; + productReference = B0500D751FAC4714002E177E /* HelloiPhoneUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B0500D4E1FAC4714002E177E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = "Taehyeon Kim"; + TargetAttributes = { + B0500D551FAC4714002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + }; + B0500D691FAC4714002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D551FAC4714002E177E; + }; + B0500D741FAC4714002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D551FAC4714002E177E; + }; + }; + }; + buildConfigurationList = B0500D511FAC4714002E177E /* Build configuration list for PBXProject "HelloiPhone" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B0500D4D1FAC4714002E177E; + productRefGroup = B0500D571FAC4714002E177E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B0500D551FAC4714002E177E /* HelloiPhone */, + B0500D691FAC4714002E177E /* HelloiPhoneTests */, + B0500D741FAC4714002E177E /* HelloiPhoneUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B0500D541FAC4714002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D641FAC4714002E177E /* LaunchScreen.storyboard in Resources */, + B0500D611FAC4714002E177E /* Assets.xcassets in Resources */, + B0500D5F1FAC4714002E177E /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D681FAC4714002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D731FAC4714002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B0500D521FAC4714002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D5C1FAC4714002E177E /* ViewController.swift in Sources */, + B0500D5A1FAC4714002E177E /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D661FAC4714002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D6F1FAC4714002E177E /* HelloiPhoneTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500D711FAC4714002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D7A1FAC4714002E177E /* HelloiPhoneUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B0500D6C1FAC4714002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D551FAC4714002E177E /* HelloiPhone */; + targetProxy = B0500D6B1FAC4714002E177E /* PBXContainerItemProxy */; + }; + B0500D771FAC4714002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D551FAC4714002E177E /* HelloiPhone */; + targetProxy = B0500D761FAC4714002E177E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B0500D5D1FAC4714002E177E /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D5E1FAC4714002E177E /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B0500D621FAC4714002E177E /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D631FAC4714002E177E /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B0500D7C1FAC4714002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B0500D7D1FAC4714002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B0500D7F1FAC4714002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhone/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhone"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B0500D801FAC4714002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhone/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhone"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B0500D821FAC4714002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhoneTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhoneTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloiPhone.app/HelloiPhone"; + }; + name = Debug; + }; + B0500D831FAC4714002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhoneTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhoneTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloiPhone.app/HelloiPhone"; + }; + name = Release; + }; + B0500D851FAC4714002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhoneUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhoneUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = HelloiPhone; + }; + name = Debug; + }; + B0500D861FAC4714002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = HelloiPhoneUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.HelloiPhoneUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = HelloiPhone; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B0500D511FAC4714002E177E /* Build configuration list for PBXProject "HelloiPhone" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D7C1FAC4714002E177E /* Debug */, + B0500D7D1FAC4714002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D7E1FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhone" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D7F1FAC4714002E177E /* Debug */, + B0500D801FAC4714002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D811FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhoneTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D821FAC4714002E177E /* Debug */, + B0500D831FAC4714002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500D841FAC4714002E177E /* Build configuration list for PBXNativeTarget "HelloiPhoneUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500D851FAC4714002E177E /* Debug */, + B0500D861FAC4714002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B0500D4E1FAC4714002E177E /* Project object */; +} diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ca797d8 --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/AppDelegate.swift b/TaehyeonKim/HelloiPhone/HelloiPhone/AppDelegate.swift new file mode 100644 index 0000000..b462e16 --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// HelloiPhone +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/Assets.xcassets/AppIcon.appiconset/Contents.json b/TaehyeonKim/HelloiPhone/HelloiPhone/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..1d060ed --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,93 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/LaunchScreen.storyboard b/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard b/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard new file mode 100644 index 0000000..a461c90 --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/Base.lproj/Main.storyboard @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/Info.plist b/TaehyeonKim/HelloiPhone/HelloiPhone/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/HelloiPhone/HelloiPhone/ViewController.swift b/TaehyeonKim/HelloiPhone/HelloiPhone/ViewController.swift new file mode 100644 index 0000000..698ebae --- /dev/null +++ b/TaehyeonKim/HelloiPhone/HelloiPhone/ViewController.swift @@ -0,0 +1,29 @@ +// +// ViewController.swift +// HelloiPhone +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + @IBOutlet weak var myLabel: UILabel! + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func change(_ sender: Any) { + myLabel.text = "Hello iPhone" + } + +} + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj b/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj new file mode 100644 index 0000000..9d686db --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj @@ -0,0 +1,329 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + B01623201FAD80A8001FA355 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B016231F1FAD80A8001FA355 /* AppDelegate.swift */; }; + B01623221FAD80A8001FA355 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01623211FAD80A8001FA355 /* ViewController.swift */; }; + B01623251FAD80A8001FA355 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B01623231FAD80A8001FA355 /* Main.storyboard */; }; + B01623271FAD80A8001FA355 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B01623261FAD80A8001FA355 /* Assets.xcassets */; }; + B016232A1FAD80A8001FA355 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B01623281FAD80A8001FA355 /* LaunchScreen.storyboard */; }; + B01623321FAD8140001FA355 /* MeetingRoomListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01623311FAD8140001FA355 /* MeetingRoomListViewController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + B016231C1FAD80A8001FA355 /* MeetingRooms.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRooms.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B016231F1FAD80A8001FA355 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B01623211FAD80A8001FA355 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + B01623241FAD80A8001FA355 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B01623261FAD80A8001FA355 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B01623291FAD80A8001FA355 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B016232B1FAD80A8001FA355 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B01623311FAD8140001FA355 /* MeetingRoomListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingRoomListViewController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B01623191FAD80A8001FA355 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B01623131FAD80A8001FA355 = { + isa = PBXGroup; + children = ( + B016231E1FAD80A8001FA355 /* MeetingRooms */, + B016231D1FAD80A8001FA355 /* Products */, + ); + sourceTree = ""; + }; + B016231D1FAD80A8001FA355 /* Products */ = { + isa = PBXGroup; + children = ( + B016231C1FAD80A8001FA355 /* MeetingRooms.app */, + ); + name = Products; + sourceTree = ""; + }; + B016231E1FAD80A8001FA355 /* MeetingRooms */ = { + isa = PBXGroup; + children = ( + B016231F1FAD80A8001FA355 /* AppDelegate.swift */, + B01623211FAD80A8001FA355 /* ViewController.swift */, + B01623231FAD80A8001FA355 /* Main.storyboard */, + B01623311FAD8140001FA355 /* MeetingRoomListViewController.swift */, + B01623261FAD80A8001FA355 /* Assets.xcassets */, + B01623281FAD80A8001FA355 /* LaunchScreen.storyboard */, + B016232B1FAD80A8001FA355 /* Info.plist */, + ); + path = MeetingRooms; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B016231B1FAD80A8001FA355 /* MeetingRooms */ = { + isa = PBXNativeTarget; + buildConfigurationList = B016232E1FAD80A8001FA355 /* Build configuration list for PBXNativeTarget "MeetingRooms" */; + buildPhases = ( + B01623181FAD80A8001FA355 /* Sources */, + B01623191FAD80A8001FA355 /* Frameworks */, + B016231A1FAD80A8001FA355 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MeetingRooms; + productName = MeetingRooms; + productReference = B016231C1FAD80A8001FA355 /* MeetingRooms.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B01623141FAD80A8001FA355 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = "Taehyeon Kim"; + TargetAttributes = { + B016231B1FAD80A8001FA355 = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = B01623171FAD80A8001FA355 /* Build configuration list for PBXProject "MeetingRooms" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B01623131FAD80A8001FA355; + productRefGroup = B016231D1FAD80A8001FA355 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B016231B1FAD80A8001FA355 /* MeetingRooms */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B016231A1FAD80A8001FA355 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B016232A1FAD80A8001FA355 /* LaunchScreen.storyboard in Resources */, + B01623271FAD80A8001FA355 /* Assets.xcassets in Resources */, + B01623251FAD80A8001FA355 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B01623181FAD80A8001FA355 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B01623221FAD80A8001FA355 /* ViewController.swift in Sources */, + B01623201FAD80A8001FA355 /* AppDelegate.swift in Sources */, + B01623321FAD8140001FA355 /* MeetingRoomListViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + B01623231FAD80A8001FA355 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B01623241FAD80A8001FA355 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B01623281FAD80A8001FA355 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B01623291FAD80A8001FA355 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B016232C1FAD80A8001FA355 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B016232D1FAD80A8001FA355 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B016232F1FAD80A8001FA355 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MeetingRooms/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MeetingRooms"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B01623301FAD80A8001FA355 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MeetingRooms/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MeetingRooms"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B01623171FAD80A8001FA355 /* Build configuration list for PBXProject "MeetingRooms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B016232C1FAD80A8001FA355 /* Debug */, + B016232D1FAD80A8001FA355 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B016232E1FAD80A8001FA355 /* Build configuration list for PBXNativeTarget "MeetingRooms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B016232F1FAD80A8001FA355 /* Debug */, + B01623301FAD80A8001FA355 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B01623141FAD80A8001FA355 /* Project object */; +} diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ff41f19 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/AppDelegate.swift b/TaehyeonKim/MeetingRooms/MeetingRooms/AppDelegate.swift new file mode 100644 index 0000000..26abc78 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// MeetingRooms +// +// Created by Taehyeon Kim on 2017. 11. 4.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard b/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard b/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard new file mode 100644 index 0000000..71f4da0 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/Info.plist b/TaehyeonKim/MeetingRooms/MeetingRooms/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/MeetingRoomListViewController.swift b/TaehyeonKim/MeetingRooms/MeetingRooms/MeetingRoomListViewController.swift new file mode 100644 index 0000000..2876359 --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/MeetingRoomListViewController.swift @@ -0,0 +1,123 @@ +// +// MeetingRoomListViewController.swift +// MeetingRooms +// +// Created by Taehyeon Kim on 2017. 11. 4.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +class MeetingRoomListViewController: UITableViewController { + + var meetingRooms:[String:[String:Int]] = ["Meeting":["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10], "Seminar":["Cezanne":20, "Matisse":30, "Reonir":40]] + func meetingRoomsAtIndex(index:Int) -> (key:String, value:[String: Int]) { + let orderedMeetingRooms = meetingRooms.sorted(by:{$0.1.first!.1 < $1.1.first!.1}) + return orderedMeetingRooms[index] + } + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSections(in tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + + return meetingRooms.count + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + //let categoryValues = Array(meetingRooms.values)[section] + let rowCount = meetingRoomsAtIndex(index:section).value.count + return rowCount + } + + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath) + + + //let categoryValue = Array(meetingRooms.values)[indexPath.section] + let categoryValue = meetingRoomsAtIndex(index:indexPath.section).value + let orderedCategoryValue = categoryValue.sorted(by:{$0.1 < $1.1}) + + let roomName = orderedCategoryValue[indexPath.row].0 + let capacity = orderedCategoryValue[indexPath.row].1 + + cell.textLabel!.text = roomName + cell.detailTextLabel!.text = "\(capacity)" + + return cell + } + + override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + //let orderedMeetingRooms = meetingRooms.sorted(by:{$0.1.first!.1 < $1.1.first!.1}) + return meetingRoomsAtIndex(index:section).key + } + + override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? { + //let orderedMeetingRooms = meetingRooms.sorted(by:{$0.1.first!.1 < $1.1.first!.1}) + + let rowCount = meetingRoomsAtIndex(index:section).value.count + return "\(rowCount) rooms" + } + + /* + // Override to support conditional editing of the table view. + override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { + if editingStyle == .delete { + // Delete the row from the data source + tableView.deleteRows(at: [indexPath], with: .fade) + } else if editingStyle == .insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // 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.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TaehyeonKim/MeetingRooms/MeetingRooms/ViewController.swift b/TaehyeonKim/MeetingRooms/MeetingRooms/ViewController.swift new file mode 100644 index 0000000..08261fb --- /dev/null +++ b/TaehyeonKim/MeetingRooms/MeetingRooms/ViewController.swift @@ -0,0 +1,25 @@ +// +// ViewController.swift +// MeetingRooms +// +// Created by Taehyeon Kim on 2017. 11. 4.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj new file mode 100644 index 0000000..a2255b3 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.pbxproj @@ -0,0 +1,332 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2C1A2E7B1CC7603D0069EEED /* TintColorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */; }; + 2C5B2DA81CC71E8D007D75DD /* EquipmentsDefault.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */; }; + 2C5B2DAA1CC726B8007D75DD /* EquipmentsListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */; }; + 2C6F67101CC233F5007EAEC7 /* RoomInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */; }; + 2C6F67121CC342F3007EAEC7 /* ReservationListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */; }; + 2C6F67141CC34BDF007EAEC7 /* ReserveRoomViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */; }; + 2C9C276A1C958848002525E4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9C27691C958848002525E4 /* AppDelegate.swift */; }; + 2C9C276F1C958848002525E4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C276D1C958848002525E4 /* Main.storyboard */; }; + 2C9C27711C958849002525E4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C27701C958849002525E4 /* Assets.xcassets */; }; + 2C9C27741C958849002525E4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */; }; + 2C9C277C1C9588BE002525E4 /* MeetingRoomsListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */; }; + 2CAA1EF41CB3F36D0096F3FA /* DataCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */; }; + 2CAA1EF61CB3FA630096F3FA /* BranchListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */; }; + 2CAA1EF81CB3FA7C0096F3FA /* ServiceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TintColorViewController.swift; sourceTree = ""; }; + 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = EquipmentsDefault.plist; sourceTree = ""; }; + 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EquipmentsListViewController.swift; sourceTree = ""; }; + 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RoomInfoViewController.swift; sourceTree = ""; }; + 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReservationListViewController.swift; sourceTree = ""; }; + 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReserveRoomViewController.swift; sourceTree = ""; }; + 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRoomsDynamic.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2C9C27691C958848002525E4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 2C9C276E1C958848002525E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 2C9C27701C958849002525E4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 2C9C27731C958849002525E4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 2C9C27751C958849002525E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MeetingRoomsListController.swift; sourceTree = ""; }; + 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataCenter.swift; sourceTree = ""; }; + 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BranchListViewController.swift; sourceTree = ""; }; + 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceListViewController.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2C9C27631C958847002525E4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2C9C275D1C958847002525E4 = { + isa = PBXGroup; + children = ( + 2C9C27681C958847002525E4 /* MeetingRoomsDynamic */, + 2C9C27671C958847002525E4 /* Products */, + ); + sourceTree = ""; + }; + 2C9C27671C958847002525E4 /* Products */ = { + isa = PBXGroup; + children = ( + 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */, + ); + name = Products; + sourceTree = ""; + }; + 2C9C27681C958847002525E4 /* MeetingRoomsDynamic */ = { + isa = PBXGroup; + children = ( + 2C9C27691C958848002525E4 /* AppDelegate.swift */, + 2CAA1EF51CB3FA630096F3FA /* BranchListViewController.swift */, + 2CAA1EF71CB3FA7C0096F3FA /* ServiceListViewController.swift */, + 2C9C277B1C9588BE002525E4 /* MeetingRoomsListController.swift */, + 2CAA1EF31CB3F36D0096F3FA /* DataCenter.swift */, + 2C6F670F1CC233F5007EAEC7 /* RoomInfoViewController.swift */, + 2C6F67111CC342F3007EAEC7 /* ReservationListViewController.swift */, + 2C6F67131CC34BDF007EAEC7 /* ReserveRoomViewController.swift */, + 2C9C276D1C958848002525E4 /* Main.storyboard */, + 2C1A2E7A1CC7603D0069EEED /* TintColorViewController.swift */, + 2C5B2DA91CC726B8007D75DD /* EquipmentsListViewController.swift */, + 2C9C27701C958849002525E4 /* Assets.xcassets */, + 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */, + 2C5B2DA71CC71E8D007D75DD /* EquipmentsDefault.plist */, + 2C9C27751C958849002525E4 /* Info.plist */, + ); + path = MeetingRoomsDynamic; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2C9C27651C958847002525E4 /* MeetingRoomsDynamic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2C9C27781C958849002525E4 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */; + buildPhases = ( + 2C9C27621C958847002525E4 /* Sources */, + 2C9C27631C958847002525E4 /* Frameworks */, + 2C9C27641C958847002525E4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MeetingRoomsDynamic; + productName = MeetingRoomsDynamic; + productReference = 2C9C27661C958847002525E4 /* MeetingRoomsDynamic.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2C9C275E1C958847002525E4 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0710; + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = CodersHigh; + TargetAttributes = { + 2C9C27651C958847002525E4 = { + CreatedOnToolsVersion = 7.1; + }; + }; + }; + buildConfigurationList = 2C9C27611C958847002525E4 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 2C9C275D1C958847002525E4; + productRefGroup = 2C9C27671C958847002525E4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2C9C27651C958847002525E4 /* MeetingRoomsDynamic */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2C9C27641C958847002525E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C5B2DA81CC71E8D007D75DD /* EquipmentsDefault.plist in Resources */, + 2C9C27741C958849002525E4 /* LaunchScreen.storyboard in Resources */, + 2C9C27711C958849002525E4 /* Assets.xcassets in Resources */, + 2C9C276F1C958848002525E4 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2C9C27621C958847002525E4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2CAA1EF81CB3FA7C0096F3FA /* ServiceListViewController.swift in Sources */, + 2C6F67121CC342F3007EAEC7 /* ReservationListViewController.swift in Sources */, + 2C5B2DAA1CC726B8007D75DD /* EquipmentsListViewController.swift in Sources */, + 2C6F67141CC34BDF007EAEC7 /* ReserveRoomViewController.swift in Sources */, + 2CAA1EF41CB3F36D0096F3FA /* DataCenter.swift in Sources */, + 2C9C277C1C9588BE002525E4 /* MeetingRoomsListController.swift in Sources */, + 2CAA1EF61CB3FA630096F3FA /* BranchListViewController.swift in Sources */, + 2C9C276A1C958848002525E4 /* AppDelegate.swift in Sources */, + 2C6F67101CC233F5007EAEC7 /* RoomInfoViewController.swift in Sources */, + 2C1A2E7B1CC7603D0069EEED /* TintColorViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 2C9C276D1C958848002525E4 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 2C9C276E1C958848002525E4 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 2C9C27721C958849002525E4 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 2C9C27731C958849002525E4 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 2C9C27761C958849002525E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 9.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 2C9C27771C958849002525E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 9.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 2C9C27791C958849002525E4 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = MeetingRoomsDynamic/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRoomsDynamic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 2C9C277A1C958849002525E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = MeetingRoomsDynamic/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRoomsDynamic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2C9C27611C958847002525E4 /* Build configuration list for PBXProject "MeetingRoomsDynamic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C9C27761C958849002525E4 /* Debug */, + 2C9C27771C958849002525E4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2C9C27781C958849002525E4 /* Build configuration list for PBXNativeTarget "MeetingRoomsDynamic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C9C27791C958849002525E4 /* Debug */, + 2C9C277A1C958849002525E4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2C9C275E1C958847002525E4 /* Project object */; +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift new file mode 100644 index 0000000..d510ea8 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/AppDelegate.swift @@ -0,0 +1,55 @@ +// +// AppDelegate.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 3. 13.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + dataCenter.save() + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + + let userDefaultColor = UserDefaults.standard.integer(forKey: TintColorKey) + guard let defaultColor = TintColor(rawValue: userDefaultColor)?.color else { + return + } + applyTintColor(color: defaultColor) + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + dataCenter.save() + } + + +} + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..eeea76c --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,73 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/Contents.json b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json new file mode 100644 index 0000000..bf9fa3c --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "building_tab.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/building_tab.imageset/building_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bb3f18f1df67505c3781f69cab17f186af5e52 GIT binary patch literal 6506 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 Q_y7O^07*qoM6N<$f{Ui7Y5)KL literal 0 HcmV?d00001 diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json new file mode 100644 index 0000000..31ee980 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "equipment_tab.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/equipment_tab.imageset/equipment_tab.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ae18504c6bed259f8ac7a39c96231883b5eb44 GIT binary patch literal 5443 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 literal 0 HcmV?d00001 diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/Contents.json b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/Contents.json new file mode 100644 index 0000000..73c4fdb --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "location.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Assets.xcassets/location.imageset/location.png new file mode 100644 index 0000000000000000000000000000000000000000..064332fd2e87f98d3fb10a9539f9e3d0b66ba728 GIT binary patch literal 3383 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 N002ovPDHLkV1k#tX$$}W literal 0 HcmV?d00001 diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard new file mode 100644 index 0000000..afabd6b --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Base.lproj/Main.storyboard @@ -0,0 +1,792 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift new file mode 100644 index 0000000..7e96dbf --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/BranchListViewController.swift @@ -0,0 +1,72 @@ +// +// BranchListViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 5.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +class BranchListViewController: UITableViewController { + + override func viewDidLoad() { + self.title = "지점" + } + + override func numberOfSections(in tableView: UITableView) -> Int { + + return 1 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + + let rowCount = dataCenter.branches.count + return rowCount + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "BranchCell", for: indexPath as IndexPath) + + let branch = dataCenter.branches[indexPath.row] + cell.textLabel?.text = branch.name + return cell + } + + + /* + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + if segue.identifier == "ServiceSegue" { + if let destination = segue.destinationViewController as? ServiceListViewController { + if let selectedIndex = self.tableView.indexPathForSelectedRow?.row { + destination.branch = dataCenter.branches[selectedIndex] as Branch + } + + } + } + } + */ + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if segue.identifier == "ServiceSegue" { + guard let destination = segue.destination as? ServiceListViewController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row else { + return + } + destination.branch = dataCenter.branches[selectedIndex] as Branch + } + } + @IBAction func locationTurnOn(_: Any) { + + let locationAlert = UIAlertController(title: "위치 정보 요청", message: "위치 정보를 기반으로 가까운 지점을 자동으로 선택할 수 있습니다. 또는 지도앱에서 지점의 위치 정보를 제공해 드립니다. 선택하신 기능이 계속 제공됩니다. 환경설정에서 제공되는 기능을 변경할 수 있습니다.", preferredStyle: .actionSheet) + let locationAction = UIAlertAction(title: "위치정보 켜기", style: .default, handler: { (action:UIAlertAction) -> Void in + print ("위치정보 켜기 선택") + }) + let openMapAction = UIAlertAction(title: "지도앱에서 열기", style: .default, handler: { (action:UIAlertAction) -> Void in + print ("지도앱에서 열기 선택") + }) + + locationAlert.addAction(locationAction) + locationAlert.addAction(openMapAction) + self.present(locationAlert, animated: true, completion: nil) + } +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift new file mode 100644 index 0000000..bbea1fe --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/DataCenter.swift @@ -0,0 +1,165 @@ +// +// DataCenter.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 5.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import Foundation + +let dataCenter:DataCenter = DataCenter() +let fileName = "BranchData.brch" + +class DataCenter { + var branches:[Branch] = [] + + var filePath:String { get{ + let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + return documentDirectory + fileName + }} + + init() { + if FileManager.default.fileExists(atPath: self.filePath) { + //read + if let unarchArray = NSKeyedUnarchiver.unarchiveObject(withFile: self.filePath) as? [Branch] { + branches += unarchArray + } + } else { + //create + branches += defaultData() + } + + + } + + func defaultData() -> Array { + let banksyRoom = MeetingRoom(name: "Banksy", capacity: 4) + let kahloRoom = MeetingRoom(name: "Kahlo", capacity: 8) + let riveraRoom = MeetingRoom(name: "Rivera", capacity: 8) + let picassoRoom = MeetingRoom(name: "Picasso", capacity: 10) + + + let vehicleService = Service(name: "차량예약") + let meetingRoomService = Service(name: "회의실예약") + let visitorService = Service(name: "방문자예약") + let deskService = Service(name: "데스크예약") + meetingRoomService.item = [banksyRoom, kahloRoom, riveraRoom, picassoRoom] + + let pangyoBranch = Branch(name: "판교점") + let samsungBranch = Branch(name: "삼성점") + let yeoksamBranch = Branch(name: "역삼점") + let sinrimBranch = Branch(name: "신림점") + let songdoBranch = Branch(name: "송도점") + let anamBranch = Branch(name: "안암점") + pangyoBranch.services = [vehicleService, meetingRoomService, visitorService, deskService] + + let branchArray = [samsungBranch, pangyoBranch, yeoksamBranch, sinrimBranch, songdoBranch, anamBranch] + return branchArray + } + + func save(){ + NSKeyedArchiver.archiveRootObject(self.branches, toFile: self.filePath) + } +} + + +class Branch:NSObject, NSCoding { + let name:String + var services:[Service]? + + init(name:String) { + self.name = name + } + + required init?(coder aDecoder: NSCoder) { + self.name = aDecoder.decodeObject(forKey: "name") as! String + self.services = aDecoder.decodeObject(forKey: "services") as? [Service] + } + + func encode(with aCoder: NSCoder) { + aCoder.encode(self.name, forKey: "name") + aCoder.encode(self.services, forKey: "services") + } +} + + +class Service:NSObject, NSCoding { + let name:String + var item:[MeetingRoom]? + + init (name:String){ + self.name = name + } + + required init?(coder aDecoder: NSCoder) { + self.name = aDecoder.decodeObject(forKey: "name") as! String + self.item = aDecoder.decodeObject(forKey: "item") as? [MeetingRoom] + } + + func encode(with aCoder: NSCoder) { + aCoder.encode(self.name, forKey: "name") + aCoder.encode(self.item, forKey: "item") + } + +} + + +class MeetingRoom:NSObject, NSCoding { + let name:String + let capacity:Int + var reservations:[Reservation]? + + init(name:String, capacity:Int) { + self.name = name + self.capacity = capacity + } + + required init?(coder aDecoder: NSCoder) { + self.name = aDecoder.decodeObject(forKey: "name") as! String + self.capacity = aDecoder.decodeInteger(forKey: "capacity") + self.reservations = aDecoder.decodeObject(forKey: "reservations") as? [Reservation] + } + + func encode(with aCoder: NSCoder) { + aCoder.encode(self.name, forKey: "name") + aCoder.encode(self.capacity, forKey: "capacity") + aCoder.encode(self.reservations, forKey: "reservations") + } +} + + + +class Reservation:NSObject, NSCoding { + var hostName:String + var date:NSDate + var attendees:Int + var equipments:[String] + var catering:Bool + + override init() { + self.hostName = "Host of meeting" + self.date = NSDate() + self.attendees = 1 + self.equipments = [] + self.catering = false + } + + + required init?(coder aDecoder: NSCoder) { + self.hostName = aDecoder.decodeObject(forKey: "hostName") as! String + self.date = aDecoder.decodeObject(forKey: "date") as! NSDate + self.attendees = aDecoder.decodeInteger(forKey: "attendees") + self.equipments = aDecoder.decodeObject(forKey: "equipments") as! [String] + self.catering = aDecoder.decodeBool(forKey: "catering") + } + + func encode(with aCoder: NSCoder) { + aCoder.encode(self.hostName, forKey: "hostName") + aCoder.encode(self.date, forKey: "date") + aCoder.encode(self.attendees, forKey: "attendees") + aCoder.encode(self.equipments, forKey: "equipments") + aCoder.encode(self.catering, forKey: "catering") + } +} + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsDefault.plist b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsDefault.plist new file mode 100644 index 0000000..5962ab0 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsDefault.plist @@ -0,0 +1,30 @@ + + + + + + name + HP G2020T + amount + 15 + + + name + Lenovo P900TW + amount + 10 + + + name + HP DL320e + amount + 7 + + + name + TYAN KST208 + amount + 20 + + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift new file mode 100644 index 0000000..1591b8e --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/EquipmentsListViewController.swift @@ -0,0 +1,115 @@ +// +// EquipmentsListViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 20.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +let EquipmentFileName = "EquipmentsDefault" +class EquipmentsListViewController: UITableViewController { + + var equipments:Array = [] + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + + guard let equipmentURL = Bundle.main.url(forResource: EquipmentFileName, withExtension: "plist") else { + print("No File") + return + } + if let equipmentsArray = NSArray(contentsOf: equipmentURL){ + print(equipmentsArray) + equipments += Array(equipmentsArray) + } + + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSections(in tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return 1 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return equipments.count + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "EquipmentCell", for: indexPath as IndexPath) + + guard let equipment = equipments[indexPath.row] as? [String:AnyObject] else { + return cell + } + + if let name = equipment["name"] as? String { + cell.textLabel?.text = name + } + if let amount = equipment["amount"] as? Int { + cell.detailTextLabel?.text = String(amount) + } + + return cell + } + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist new file mode 100644 index 0000000..40c6215 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift new file mode 100644 index 0000000..ca6fb11 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/MeetingRoomsListController.swift @@ -0,0 +1,179 @@ +// +// MeetingRoomsListController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 3. 13.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +/* +class MeetingRoomsListController: UITableViewController { + + //var meetingRooms:[String:Int] = ["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10, "Cezanne":20, "Matisse":30, "Renoir":40] + var meetingRooms:[String:[String:Int]] = ["Meeting":["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10], "Seminar":["Cezanne":20, "Matisse":30, "Renoir":40]] + + func meetingRoomsAtIndex(index:Int) -> (key:String, value:[String:Int]) { + let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1}) + return orderedMeetingRooms[index] + } + //Generic + + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + + + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + // MARK: - Table view data source + + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return meetingRooms.count + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + //let categoryValues = Array(meetingRooms.values)[section] + + //let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1}) + + //let rowCount = orderedMeetingRooms[section].1.count + let rowCount = meetingRoomsAtIndex(section).value.count + return rowCount + } + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) + + //let orderedMeetingRooms = meetingRooms.sort({$0.1.first!.1 < $1.1.first!.1}) + //let categoryValue = orderedMeetingRooms[indexPath.section].1 + let categoryValue = meetingRoomsAtIndex(indexPath.section).value + + let orderedCategoryValues = categoryValue.sort({$0.1 < $1.1}) + let roomName = orderedCategoryValues[indexPath.row].0 + let capacity = orderedCategoryValues[indexPath.row].1 + + cell.textLabel!.text = roomName + cell.detailTextLabel!.text = "\(capacity)" + + return cell + } + + + override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + + return Array(meetingRooms.keys)[section] + } + + override func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? { + + let rowCount = Array(meetingRooms.values)[section].count + + return "\(rowCount) rooms" + } + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} + + */ + + +class MeetingRoomsListController: UITableViewController { + var service:Service? + + override func viewDidLoad() { + self.title = service?.name + } + + override func numberOfSections(in tableView: UITableView) -> Int { + + return 1 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + guard let rowCount = service?.item?.count else { + return 0 + } + return rowCount + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath) + + guard let meetingRoom = service?.item?[indexPath.row] else { + return cell + } + cell.textLabel?.text = meetingRoom.name + cell.detailTextLabel?.text = String(meetingRoom.capacity) + return cell + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if segue.identifier == "ReservationSegue" { + guard let destination = segue.destination as? ReservationListViewController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row , let meetingRoom = service?.item?[selectedIndex] else { + return + } + destination.meetingRoom = meetingRoom + } + } +} + + diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift new file mode 100644 index 0000000..ca642eb --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReservationListViewController.swift @@ -0,0 +1,116 @@ +// +// ReservationListViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 17.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +class ReservationListViewController: UITableViewController { + + var meetingRoom:MeetingRoom? + var newReservation:Reservation? + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + func addNewItem(reservation:Reservation) { + if (self.meetingRoom?.reservations?.append(reservation)) == nil { + self.meetingRoom?.reservations = [reservation] + } + dataCenter.save() + + self.tableView.reloadData() + + } + + @IBAction func unwindToReserveList(_:UIStoryboardSegue) { + print("unwind") + } + + // MARK: - Table view data source + + override func numberOfSections(in tableView: UITableView) -> Int { + return 1 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + guard let rowCount = meetingRoom?.reservations?.count else { + return 0 + } + return rowCount + } + + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "ReservationCell", for: indexPath as IndexPath) + + guard let reservation = meetingRoom?.reservations?[indexPath.row] else { + return cell + } + cell.textLabel?.text = reservation.date.description + cell.detailTextLabel?.text = reservation.hostName + return cell + } + + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift new file mode 100644 index 0000000..9c9e254 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ReserveRoomViewController.swift @@ -0,0 +1,162 @@ +// +// ReserveRoomViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 17.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +class ReserveRoomViewController: UITableViewController { + + //var reservation:Reservation? + + @IBOutlet weak var hostNameField: UITextField! + @IBOutlet weak var datePicker: UIDatePicker! + @IBOutlet weak var attendeesField: UITextField! + @IBOutlet weak var equipmentsField: UITextField! + @IBOutlet weak var cateringSwitch: UISwitch! + + + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + + + } + + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func makeReservation(_: Any) { + guard let reservation = makeReservation() else { + self.dismiss(animated: true, completion: { + }) + return + } + + switch self.presentingViewController { + case let tabBarC as UITabBarController: + if let navigationC = tabBarC.selectedViewController as? UINavigationController, let reservationListVC = navigationC.topViewController as? ReservationListViewController { + reservationListVC.addNewItem(reservation: reservation) + } + case let navigationC as UINavigationController: + if let reservationListVC = navigationC.topViewController as? ReservationListViewController { + reservationListVC.addNewItem(reservation: reservation) + } + case let reservationListVC as ReservationListViewController: + reservationListVC.addNewItem(reservation: reservation) + default: + print("Cannot find ReservationListViewController") + break + } + + self.dismiss(animated: true, completion: { + }) + + } + + + @IBAction func cancelReservation(_: Any) { + self.dismiss(animated: true, completion: nil) + } + + + + + + // MARK: - Table view data source + /* + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return 0 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return 0 + } + + + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) + + // Configure the cell... + + return cell + } + */ + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + + // 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?) { + if segue.identifier == "ReserveDone" { + guard let newReservation = makeReservation(), let reservationListVC = segue.destination as? ReservationListViewController else { + return + } + reservationListVC.addNewItem(reservation: newReservation) + } + } + + func makeReservation() -> Reservation? { + let newReservation = Reservation() + let host = hostNameField.text! + if host.isEmpty { + return nil + } + newReservation.hostName = host + newReservation.date = datePicker.date as NSDate + if let equipmentArray = equipmentsField.text?.characters.split(separator: ",").map(String.init) { + newReservation.equipments = equipmentArray + } + newReservation.catering = cateringSwitch.isOn + return newReservation + } +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift new file mode 100644 index 0000000..9ff9156 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/RoomInfoViewController.swift @@ -0,0 +1,100 @@ +// +// RoomInfoViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 16.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +class RoomInfoViewController: UITableViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Uncomment the following line to preserve selection between presentations + // self.clearsSelectionOnViewWillAppear = false + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + // self.navigationItem.rightBarButtonItem = self.editButtonItem() + } + + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func dismissModal(_: Any) { + self.dismiss(animated: true, completion: nil) +} + + // MARK: - Table view data source + /* + override func numberOfSectionsInTableView(tableView: UITableView) -> Int { + // #warning Incomplete implementation, return the number of sections + return 0 + } + + override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + // #warning Incomplete implementation, return the number of rows + return 0 + }*/ + + /* + override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) + + // Configure the cell... + + return cell + } + */ + + /* + // Override to support conditional editing of the table view. + override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the specified item to be editable. + return true + } + */ + + /* + // Override to support editing the table view. + override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { + if editingStyle == .Delete { + // Delete the row from the data source + tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade) + } else if editingStyle == .Insert { + // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view + } + } + */ + + /* + // Override to support rearranging the table view. + override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { + + } + */ + + /* + // Override to support conditional rearranging of the table view. + override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { + // Return false if you do not want the item to be re-orderable. + return true + } + */ + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift new file mode 100644 index 0000000..64875aa --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/ServiceListViewController.swift @@ -0,0 +1,49 @@ +// +// ServiceListViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 5.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +class ServiceListViewController: UITableViewController { + + var branch:Branch? + + override func viewDidLoad() { + self.title = branch?.name + } + + override func numberOfSections(in tableView: UITableView) -> Int { + + return 1 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + guard let rowCount = branch?.services?.count else { + return 0 + } + return rowCount + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "ServiceCell", for: indexPath as IndexPath) + + guard let service = branch?.services?[indexPath.row] else { + return cell + } + cell.textLabel?.text = service.name + return cell + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if segue.identifier == "MeetingRoomSegue" { + guard let destination = segue.destination as? MeetingRoomsListController, let selectedIndex = self.tableView.indexPathForSelectedRow?.row , let service = branch?.services?[selectedIndex] else { + return + } + destination.service = service + } + } +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift new file mode 100644 index 0000000..f62823d --- /dev/null +++ b/TaehyeonKim/MeetingRoomsDynamic/MeetingRoomsDynamic/TintColorViewController.swift @@ -0,0 +1,75 @@ +// +// TintColorViewController.swift +// MeetingRoomsDynamic +// +// Created by Lingostar on 2016. 4. 20.. +// Copyright © 2016년 CodersHigh. All rights reserved. +// + +import UIKit + +enum TintColor:Int { + case Blue=0, Red, Green, Purple + + var color:UIColor {get{ + switch self { + case .Blue: + return UIColor.blue + case .Red: + return UIColor.red + case .Green: + return UIColor.green + case .Purple: + return UIColor.purple + } + }} +} +let TintColorKey = "TintColor" + +func applyTintColor(color:UIColor){ + guard let window = UIApplication.shared.keyWindow else { + return + } + window.tintColor = color +} + +class TintColorViewController: UIViewController { + + @IBOutlet weak var tintColorSegment: UISegmentedControl! + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + + let userDefaultColor = UserDefaults.standard.integer(forKey: TintColorKey) + self.tintColorSegment.selectedSegmentIndex = userDefaultColor + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func tintColorChanged(_: Any) { + let selectedIndex = self.tintColorSegment.selectedSegmentIndex + UserDefaults.standard.set(selectedIndex, forKey: TintColorKey) + guard let changedColor = TintColor(rawValue: selectedIndex)?.color else { + return + } + applyTintColor(color: changedColor) + } + + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/TaehyeonKim/MeetingRoomsDynamic/building.png b/TaehyeonKim/MeetingRoomsDynamic/building.png new file mode 100644 index 0000000000000000000000000000000000000000..6b1aec01dedbf7a82b98c44f45fc9324939e2b34 GIT binary patch literal 11950 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 Hdr$rcDdq8c literal 0 HcmV?d00001 diff --git a/TaehyeonKim/MeetingRoomsDynamic/equipment.png b/TaehyeonKim/MeetingRoomsDynamic/equipment.png new file mode 100644 index 0000000000000000000000000000000000000000..b9132b8c6e94ea59e6afa2438abff0ef94e078a1 GIT binary patch literal 17736 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 N002ovPDHLkV1k#tX$$}W literal 0 HcmV?d00001 diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj new file mode 100644 index 0000000..124439d --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.pbxproj @@ -0,0 +1,296 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 2C6EF0961C2AB6D8002398BD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */; }; + 2C6EF0981C2AB6D8002398BD /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6EF0971C2AB6D8002398BD /* ViewController.swift */; }; + 2C6EF09B1C2AB6D8002398BD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF0991C2AB6D8002398BD /* Main.storyboard */; }; + 2C6EF09D1C2AB6D8002398BD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */; }; + 2C6EF0A01C2AB6D8002398BD /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MeetingRooms.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 2C6EF0971C2AB6D8002398BD /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 2C6EF09A1C2AB6D8002398BD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 2C6EF09F1C2AB6D8002398BD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 2C6EF0A11C2AB6D8002398BD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2C6EF08F1C2AB6D7002398BD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2C6EF0891C2AB6D7002398BD = { + isa = PBXGroup; + children = ( + 2C6EF0941C2AB6D7002398BD /* MeetingRooms */, + 2C6EF0931C2AB6D7002398BD /* Products */, + ); + sourceTree = ""; + }; + 2C6EF0931C2AB6D7002398BD /* Products */ = { + isa = PBXGroup; + children = ( + 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */, + ); + name = Products; + sourceTree = ""; + }; + 2C6EF0941C2AB6D7002398BD /* MeetingRooms */ = { + isa = PBXGroup; + children = ( + 2C6EF0951C2AB6D8002398BD /* AppDelegate.swift */, + 2C6EF0971C2AB6D8002398BD /* ViewController.swift */, + 2C6EF0991C2AB6D8002398BD /* Main.storyboard */, + 2C6EF09C1C2AB6D8002398BD /* Assets.xcassets */, + 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */, + 2C6EF0A11C2AB6D8002398BD /* Info.plist */, + ); + path = MeetingRooms; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2C6EF0911C2AB6D7002398BD /* MeetingRooms */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2C6EF0A41C2AB6D8002398BD /* Build configuration list for PBXNativeTarget "MeetingRooms" */; + buildPhases = ( + 2C6EF08E1C2AB6D7002398BD /* Sources */, + 2C6EF08F1C2AB6D7002398BD /* Frameworks */, + 2C6EF0901C2AB6D7002398BD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MeetingRooms; + productName = MeetingRooms; + productReference = 2C6EF0921C2AB6D7002398BD /* MeetingRooms.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2C6EF08A1C2AB6D7002398BD /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0710; + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = CodersHigh; + TargetAttributes = { + 2C6EF0911C2AB6D7002398BD = { + CreatedOnToolsVersion = 7.1; + }; + }; + }; + buildConfigurationList = 2C6EF08D1C2AB6D7002398BD /* Build configuration list for PBXProject "MeetingRooms" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 2C6EF0891C2AB6D7002398BD; + productRefGroup = 2C6EF0931C2AB6D7002398BD /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 2C6EF0911C2AB6D7002398BD /* MeetingRooms */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2C6EF0901C2AB6D7002398BD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C6EF0A01C2AB6D8002398BD /* LaunchScreen.storyboard in Resources */, + 2C6EF09D1C2AB6D8002398BD /* Assets.xcassets in Resources */, + 2C6EF09B1C2AB6D8002398BD /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2C6EF08E1C2AB6D7002398BD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C6EF0981C2AB6D8002398BD /* ViewController.swift in Sources */, + 2C6EF0961C2AB6D8002398BD /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 2C6EF0991C2AB6D8002398BD /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 2C6EF09A1C2AB6D8002398BD /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 2C6EF09E1C2AB6D8002398BD /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 2C6EF09F1C2AB6D8002398BD /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 2C6EF0A21C2AB6D8002398BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 9.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 2C6EF0A31C2AB6D8002398BD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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 = 9.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 2C6EF0A51C2AB6D8002398BD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = MeetingRooms/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRooms; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + 2C6EF0A61C2AB6D8002398BD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = MeetingRooms/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.codershigh.MeetingRooms; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2C6EF08D1C2AB6D7002398BD /* Build configuration list for PBXProject "MeetingRooms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C6EF0A21C2AB6D8002398BD /* Debug */, + 2C6EF0A31C2AB6D8002398BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2C6EF0A41C2AB6D8002398BD /* Build configuration list for PBXNativeTarget "MeetingRooms" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C6EF0A51C2AB6D8002398BD /* Debug */, + 2C6EF0A61C2AB6D8002398BD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2C6EF08A1C2AB6D7002398BD /* Project object */; +} diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/AppDelegate.swift b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/AppDelegate.swift new file mode 100644 index 0000000..4feb190 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// MeetingRooms +// +// Created by Lingostar on 2015. 12. 23.. +// Copyright © 2015년 CodersHigh. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Assets.xcassets/4347286612_11577182f1_o.imageset/4347286612_11577182f1_o.jpg new file mode 100644 index 0000000000000000000000000000000000000000..829e21b43c12bacd242d4d95386725135c24dc15 GIT binary patch literal 28131 zcmbTdXH-*P@HTov=v@g)m!>2%DWSI@1_(U~9Yh2K0)lh}L;?tCq&G3N2nj_5Md?M6 z4pIYx0xBH=0qKf}Z+`#xUH7haKizvz*2$N>&)$1-W}caOX7caTzd3;0#1Lf&fIt8M zqJ4mWGk^iW%*e>Z$iU3R#KgkF%*qboU}s}v=ReEC1rZjwAR;UvBqS;+FC{82DPp)3%5bIs76Gxau&}eS^Ko$SDTxV*DgA%G{_#n4&%-5Bdg^cpyY6CjA++#Fd)&yqK|{lFDvDu`I0T&hzmLT)ZR&g-OFzRMpfq zG!3pI4ULRZCRl45TRVFPM|Y2#o?hNKpWu+tuse6dBjO&!CnP?6M99d@%FcO``;=H* zLZ+0Kl~+7}{ie3AzM-+HxudhIyQjCWe}FnZ@o{qM)92~=g~g@imDTTS>pQ!9`v-?d zzkVP8Cl?3+|8KEq-~U^%|A$;>XmZif(}U@m{*wztcZYU^&(Jf7DKehbM>E|B@5WdH93i~av4+5aWj|1H-vzzzn{ULN=i zpa-ljKU4*71ru#pEA!d^0h$kt?gyE-aBAL+?#X?%PQT>zN=HNHR3%YUWl3HXgKCG9 zpX1BGZMJ88eAFM@mxbO{Iq!0V>3au}cwXWnDvk5^F;;i76<@YNaGP;?_4}FVU!z}R zhraEBhqii#j>1<}fRw<(2Oh`Pha+_!awnF=WWU>r>E7+fw;i!JBL$XS<-UoyE~NUz zeNHhHarZwgw#+METQmP7JTI7}t{dNNAorG(q{uIN(8=mDs`FGd#5upHC$CL41FLV8ZVWGImQ=X|IWd?}hDH2-16v-eWiQa)FN|35&X5XFB`B~d)g^7ax%}LS^BKa8vMiHN%HN~PC9@WB=E7E;$fyQ; zZ)L{^r;RTEHSu`Pgr;8 zPo#G%|B>H5jqIK}4KLaut*QNaC6y@B0t-$}=V9UAYc9NKiNKAn1;vY_;?&BMKxU@{ z&9Z?3jsJjZw^Z-WbQZCs%Cn4?mOl1NHbU+vKFBdI9e?iB<5dd*p{FZz(cfxJrY}!wwQ*vHhT+QS>FmY+=j=%Kwq2}{BbLi3HiL_$L$#36B z4-eH#rj74CeBp^bF@RIQ8x4(UbmKV0g-ceR=xr0zLmpaZzQv}G55gl+Z0Wq`(Ke|* zX?MRf*!qqrVY;10ZA)>|A3t9zji1?qRWpmSNDzt$WHm8wp9jX$JcXRddlVkI=PE|*C&hM zv17^{3;VYSmh}vLVDZ}FWbfWnopIg9GWkrOqTO!V@h*!wUP8acC^kGhD9!8c31X`E z_4=ba#rH@1-ap`t`RPEdl-|w9dRt@RbZEuyuSR_TfVUMKW81Y+_O=7KoW7;1R@Z+( zvozM7F~Bvo>2ZIg%nD}zuLZDPFP)Gwjepwoj8#vVolyW&6K8(qoihgu!KMcOFN zMc+IBA8<$rIV<(|z)~P~ahr4`E93R&Z2Q^!gHLtq)IRx5FmM~iwExEadH-xAitJIO zsv9K`6D^{;<)TwbcCw$iSI#twjeotWWq3a;^8K?xL5jq7^kONI<#sdb!WMD;?J#J~ zWHk0ckZwZiU7hi)40d(<{*w z)EKvhn{B)6$wu+14eXqBL`Aalh?aw>?U7fu!>~po@cOXGd zv{~cfrsw54*W3#j64xp=D)u|4MA~1)Qxz(6;B=ND&QU)k_|otmDfV{n?O)WW*q@6> zTt!C{cGx!rdbfhyYeE&Tn>lKGX4=@|%+INL#eh%cWhxa}Z)a~B$*`4VtDb)_r~m88 zKVSo!kR92w)uUTY6C(W_!{zJ|eaq}bC5<@pmzeek|A6+9Us%TUu;3zz)8k9cCFg}< z#X^DGh2Bdy22*Z%kLRrR_vkpr6%Si-F<;oKIjtLi7)jKAwq_*3=@AS@<{uO)p8g1# z8ZA8)td5@Lo%n4)CEgIpf+_|}JWaj&WxPBmLP@s)?l(lc@C^c4yNuNL+(ZDs7cJw$PSxe(WU- z{oHLCW5}q99yl+P4WZU~-L8Z85;d+YfdWnI$ulXRX}9+)XHN~vv<~cBJUif0Yj4Nn z8C7u=5mrGrUO)cI`2j`QGtwp&+I@~Kn?71ioIK57Vn_5>r?@r_y^X~uj`KnxjYC=t zeX&t6)rpzArJMZ4ee#Cqr-_|~*}Bs>6WQ|;V4aF9giKdRE^U$IX%10zzBN7&m7;9X z!JPy~)fY`?5^UL$KkMsbIK9Pbk~zU<3}Jt~+sj^GZpjd%;ri#ty=+73m7WS z^wZL&dJ)4wbbH3%`694;#^y30rYD4Jbr<;{_RO*OLvFnXgTL|0E1RZF*fSrxJ>e5w zEX;;NLWMc=(|K<4;6Y_7ov5wKSguyf}<>xQ4*E8X~>p(097$X5@jo0ZyWMS zTl%!c5D>@)f}({u9`=czE{$*>_5uo`TZt{s*Tmc*G2ViJl2U!1K&YCdU`U{$?mu9% zkP)WWc0i(+F=2wNyC@>@o-ktyrOZ|06BMdw+3V;Wh{VTvQ5f`fq}^a-PTkrUV8luR zZHw=)PX^2sx;P{t=7_V{-!Ub~(t8MvGH4Ub(5^f}Sd)oda`!oqqA{XEu^T=LHYQKQ z_T38bp3~-aVnP^qB7k#rb<9o4dVqP=12XXzCBPmk5*1)bd36%K1i>G+6o^8cX)Ml1 zLb@EqiAZ(gZASz4K!hU;1dIUDlt+{34Jyt1T2!A2Nw~;F;iJHT0rS@J@=|bscefVA zEsX>24zFdU7j+C{0Fv89N(%^ppF9k)l9S5_E#t&-0DKEcm>5$6LdwTVNm-x73MeAw zVXC7b=YIg<-W9m7zHk%vjuflr4-vARK|Z+fi*Ik}%;CgAUS5U*rM~=7$cjPh@l*e@ z@UnDr`mm`Q7QK*BNZ2*5>7jf{;kEY2G-e>!#oFYkN`E(y;q0k@H?J_cTeexC0|`E; z%yFTc*n;Q`);PgVdG^%S97j*I>M+`Weiwa)T>dr682uo0h>7qg6R@y2hl>ME0&Ltp{qCD^ZpG*&n69W(8T2UtY}Dp7-{@CxK-9*}#~$4v2zD8M?{S>Hdtl&Idm?tt%BT^E->{od~l^V#VF#uqOf`Ch2|~(#vlU!hey$!3O z1!CA~_=Vvb|J(jA1w#jSO@fP_zCpGhd=4Fw*Gj#(O*-qYWg1-=^}Oqj!f+t_V=4ZD zT|Ldce*pV0w;9K{%{O0_A(=;M&yP0xw~6~#3F>IKN4yd)bT0ubx-rvs$b-~f96q6> zsX1YosnCn{Im^;q(G7cI@8etWc}a9bQBX;|WiwY(wd%0&?Jfbr7YUPZddG`L?#Euo z81N_@RlRkKxUgdq{`y=p^D?&H*Njt|&-LzHyyVlRyX_w`lY52N1F5+z1VvLMa8W8E zRILq=gYTCK7$mU*2pA4TfdK9V{mC2xpaX-ML)s0@#PcJlR-$|m&p7iTuy7#^#zG#V zgN&KMtr$9>Y$g$yKx0=s>eB|^i||pp5IE+j7|#Ql#kODs0E>h)Do>ob9D=hOzJu!D z)~CmS+V@Owl}8o(z@UHvQa!Y6hu{k58ZMyinePo!G@|fRB;a`c$tV19ywG?e1ZZq8 zX%o}N8U!QyIoOPG$^?XN+W4JFY_AFMta5PjSY@f4<>sS@CzU;KdfOsZ-+14yjjX)s zR(e(Rj0^lj-9TCp3m?hwU1C*j(-!%3A{(P(nQrPHDX@P{@XD*P?6-pyB7*a`g5{iV z{}bplLcUky+|(QUj6>T&LuKy8aRTt#N5d>H@Z8X8YCd)^)v zeffC7WxaLXG~};0*f>9w+*gW;Co!FaJXlG>THx?M7Sf2C zqjm&@7~J#qWo;w!r-ZXE5}NtEshQ5*N2x1*?_BHb+t)ppirTFt>LyfV{N%@~CWzzrF0$m{xE9mI*9X@tnL11>dpTv87Z> zW&KDuXjCxny`pnGDS?ux@e1?QF%`;0(X@q+Lb9TBOTsLn5h9iI9F_BVp$;Xv$)8~- z+N-!D{;GEi+s-3#2a!(6@*H{rPPy3Z9yRuZzrLkHsyg1_3${BK6H?VO16SbPcOD=| zHl~~ECl8__-`LFIDpmD*cMXD=f-LuWOBPXVWz0?(f(F`)6%=Cw4~^@kba0`=P= z?Itj95kph_^X#t)Tw6>441-7w8tZhB7i{n_?oc=l%voagoAyl z-~b@w1QwDND9&&?pajxoASTmZT`+g?+yCJSQ7evAxj0ef)@aFGZqn;`xfy0N#phTR!mje?hud&tlhJqo9{h@ zS#=>ZfBX%CpX44k-Yw|e4G0FCOCyb8<^Zym8qZIAmgc_c#gl?9B#2OuqAAUI3BZS` zIx+GZ&ox(NP&_7rICmmq%SKad zYkyW(Qu_VM-yj9aanNvS9dkM@Hir5sxN+eE75EOrN5iO<5=P_s)YM@Z_tVRl?8oEcre0ElntLA~ zKyU0-$==Hg)3SAVyQ62aAb-Hta&$Q~U^jo2{Vs%gtNJ9`7n0{!Re0}0tHr2M!-k^^ z{|?I(a@6~(3kpLLTBao^Hp|y!MsYC1}61}XLph#8EjrnyvsdEv4gcT=^f~NCm zh=z?E1;;bSSQ22D(%l}hwFoh|l%}x{@s8u}v%hP}%B%YWH<=0gf;zUHxWG9#Tcxs> zJ#5U9+L0?nSE<+$dv}Dlj(pd1&n9V*nIKm5G^U?#7#X3Gn6Td_tL!v$@`GY(eCI3| z+7U*N?x`uJPvv7Rp~GvRF21+Rc~2SNdLt@W&r_RTbiHrNh~u=yqo(SV*ua)r=;YZi zvJ@Tf|9n%rjQzcWWfjVdS?sC&W^0!%YkQJrTC{|{5-#|APSACn?7fZ_a>LEp>ZqF0 zDbuxX6|9fnx(128iplAk&)Cv#687qhM^gUWWSzd>O+QZ$g)22r1%tDN&Fx8yqX-G6 z{4vvRg|jIWR!~r5iO~4N(mf&&%9v};-``EMt%N6#1Ux%7Y|nx*6ApYS&Ge(ehMJ!k zXl8IlSvw5r|I_>OLV}(q&f7FBOiR-&*aFf> zw!&kmM`So)r8&v~C4nc?IANbkD1a)#N`HylsJ!GS$p8U*Gkf%+?bc8*tAk_d+D&!Y z2t&n*$%c8ebW4VamwJwjp13d`Cw*4aAS&4aZ}>I3quTj{kQ~oD$@)>crTj_NrUkAa zGnVqR;SJP+=LF^2BFAFlgJ#Z$m+KtJc~*@W2~6;t@qfTe1mUZC?Rd%63h8Kr?DKzTDwU>O0!_cf9d~c#ys0AR(RcdpoJRR1c#|3P3&lR( zj2HL)Oefkt9q2GPxaIKajR++LRXT=XLzxh1uC3Uu^b4Y5O+NL>USW~k*RQCe?T4+^hZ`-C-u_W3Z=cejMHMyGH zqu9Ps-(p4YruQ!2&vTZ+SRE2q=7=_P6G@2agNS4mDD%ps95gWEQ}jo7%2s}5)U>j^GflqkiG5W;!PR_A*CR})A)0- zFjyyrj++zKxI*rQ^w95bAiBEMS&alAYDh3?V-w*3X4EhOYplKzhhU~YKa)8{(YfY) z(~`IE*JE^3!=p*KJeVENEK%e*H6~9qy_yl7wfL)1CANHf>AHME0{Qv0-#|@3sp_A& z!h*`UpT5qPFXF@F=sAD9;0$l?`zzDf`s99g@bch5k80=3uR>wff*lcQ4Ic%l3cH3s z9Iid_JsX%7)pE)^&Nw~V6K3&aKX5X$O_6N9oC}o_DpWRZP^e87=%Y->ib7u)>*_4IzN{%AWw+TLF&Z23Te@jZ8u=g~R!}$~lEn&x^3|e=W}|dt z(@A5~__J{nXv9(sBC(riNU4Y5kUIw`nMYhtXjKu(yd%5$XKFfD^~S(Xro-E_KkLta zvu&2opmS7zxcP}je{U}8ttr9y_%K{miWz4EkHU|~g|wboDW)f_kW1k0NUMjC5HLhF zEI)M9l;%9OST*)3v;dW9r(^=NkSXlV9j7xSC(4*Lsv!J*7^wzdrx&I7%HPwcbc@jd zX$+}wHZ6%dh5*R$d2=}6nF(*CA%)ka0<-T(7#t|g$jdOl9053*I2xGIWx_F5V%}s5 z2@Izp*+mWV2hXB|QesAXunCSqY{Un^sFMLgz)}P{0}8a0A!M)#6l7$AqimYL*ZB?z zjVD0ql05N1l#fi;Wt@0C10g>ON7d|z{}NliZolyQ;*LeS(5dOQ(rv3CJx!mZOXg14 zr-^ovYm4>G!H~4GLhjqC_l_uaO%tt6(}?HKjgy%>`+&_6igNe4u;E4f@s$*_d=u`Y z1KwftijhzyCTT0BO^aDu8`!lkoCT&bf|~wK!E)bIoSw!Pdkv`zKGX*Ef3UpxqVGlx zwfC3ZzCX&w5~SX%V&Y_H=V|*pW^>K%RtV~L)m&!u)^t!xV-KTp(W>>Pxi3k*Nx9-< z=;X)!O3NQRe~!{L%y!AaL%}>QBc)&amj{P}hMFCe3nNpPk$-E({Raok0)FSYKU5Ve z-!?idMwOYrl{{bdU=Q)I&U6|>7e9c~3FFxdSpAWOi)^7=ql;B+pVO?6qqG-JksO^R+_ z?oKB4h3A`t%Igi@N2)W2x6K&A>SU&i3vK)v%8@vKv#~z*QrV?y%^ip9(|6FgD+?SZ z3tA}3?y_N52CUc3w|?B8;lVkgXGwqu(Yp_I9USdf^7G)O<_=@3e0HEHiftNBW)H!B zkNOUlp6?uyU=cw$C1h5J9B^Eo*M~o#%WUH>#iUs?a?PK72a}{L1d5ZS@xVTWbno*4 z#ow3|wP;3{Lr^xO?}lJT=>(wgETFA?A!!W31VMi#0A^_8;Mzt0O$3wB0qF{rHV$BD zd-E5^;?&{oFb+BTQ8226pA=)v=S9oZHjVWu+lJnNFth}2MHg05C3g`}!wo?xWJo)- zm_W~8oB}0X-G55*YNNN#0SFfRjYE7Zc#vrd6r4X^vxeY+$5rD@Mw#FMDbTD}MOD4L zj|_0g!7C{I+Xyi9=KH@sSF*(1o-Iish)U(a6V8&+&7 zyWlum+nnKdvFb-4WJfcL^_y})P*>q6O3_uO&U4L_R|B_TL4}Eu{--whH?0WfPbKd3 z6&o|Z1s+x3EFZ5KUC&?`tNLod-oV4IO}_b1q{zV9<@l@b<(f{9U6W4MReq*Vtix(& zb(*h?;CnzzdSvCwedlGf#n5xL)aCe=Y#(K$LHov11SSFnw0tZE;84Xx5`c; z=YP&NZ0(r`N}_uZ9ig|Mz36Rd`X~Ui{fxfJ{v844`|~Y6;&P&7j=82vjsgV%q&x_N z=h-d8QM*lt@J%_lH+TcqP5t#CbIW|Rex(lX6j-s==TG?!Mk&d1caCG<;tpxId30qGAK!2mDBO#~tyP)Mv$5R5$Dg0+MIVdR;@eXwbfi90*m z(0hmuY-}#3J<0*dT@=%%@*voV%4U)T^9hE;l_VBO=IjVvPh$bNDwV5!?0o$Q3N1-&8)02Yj_`M>?5J6_;51a7}2FTj{v{|Sknyk z`NWe}o)j>y ziP1C5XV+d_GLSvX-t#Thz{=ZJZ@PK8t%<%g=$pRz>wCk$-Q4H@YC@82ah!dKABh!u ziF(PQ3hg;N4;KOHeY#h*^(lYs_9Qe29haqM!Z%V$yrUDJD6a%euqXtZA+)3ppnL6K zJL6~M@D751Gbxpy% zikml%Ox4Ujwxn`?o9={Xi2kL@J^<%ehID(Ug4grYMt?t4gUF3go0G*CR&BXwU!8mX zUMf?TDP0^yBXGlO&)KOdK@!e;u{wDR%~?xw2N;RB8Fl~c$8qFTdOtAry*#x1(ncqm zb#K#c*j~PH4)0p(2pW=yDI(a0;0sw)w_H3( zpLQHGbdir1)jg#aaLdUc034TKG`jebGOE7dzu*i_g!bSbY7$_IYe>M6i2#+*`HoIG zU|=HzXk)A*u%L)BV;D_itzfVYJlK5O0zQiYDVVFJ`5<7%ha|=d%7)>9vl|{zG%?hN zSVaUQcwe5yiP|;XGD!?zDhcet9VH?F>1@ zF!yiYzGdtA>^Asru;s^)aJ?w+s5Aoek;GNor}TN4#lQ`_FdUlH@V< zo*iwUANVpJ75C2lSD4QS${JK17w)Hv^@s7X>Bhx*}MC@iR|Ca}@wm zUoY0Vr>4}UznsI!?1u1{mIu<71M88*^-sUg?W(f*F~p{neX@1G?sPscsta9{q-;n9 z1|sJEjMDGAw5pw(%yg3Io9=|DDuWxYm=oM8z z{2qP9clv!_-}eZ+2aM93GBY8c1+FPg8ijh@wXSh_u$XV9^pP%Y7l%~%&#=HKLvIp* z8KXr=Xruy9n^c6$e!-CFxwKIZ8Wl*Jz)i(0r0viQLUY`lE(QdNgD;}Y7<6EYDZ!@3 zy%1oKO5HJE!L!1GX#i#HP40!abBI#ltbo}Vkwff|bY*Fb#%ef|+_FGsiubw_%AwAS zRs2ILz2fmgo0|x(l}zz0dFV8k55U4#2JRO8pF)q6cwRm>)g&oy3J(0leJ-E6R1`-5 ztb$;;5&{~*imS>Gv?vj>0-FbXm6>pBnEEmKb#N&3wvx%P#z=ACwH1wOw%&77nvsux zUFNm*t6a_iS8G*lq=b_=H`(Am4kk4~wv_sF$DB;B%9$7EYi=X`J`6Lf7<6c6AC{3> zUXDIe-c{{Ts|JQ{T^l-#)L7jXIClY0VrSMqPtlKL_*kO(+rkw1J@drBp0A1~g`N0PC#0dkNr_$pO-BktgEd?Gm!9iUa4v%z(eVlNGY!8k@+U6Pi!46yuvmOmU7|u|a3Le@LqyIq`HFJ$ zaCNj~nWSj@8leJZN(5+eFfC3|rs<0ugcS<>2%KyyyOP0DD+813`7~$%=39NYLEP~< zC}ObK`{fCeBy_V_K~l4W+to=N$7uaEV@)i``#+riKl%(nvTCj9Fr53fW5eFSHqj9` z7qek%MwgLA1N{Gu`V25K382!_&+~2Ye4?^>DTwGyMI%5%G@^?{N1z#j0g^FkREz^6 zU;-#3Ayy2FNV$ust9O4tf|t-0;Vn(BkPgY9W_+g(jv4ZWlz&8GQBpMFP{76mjG6ot zcnApq7-78>HMlK)X}t7=|vJb z_lTjd=T7K_i78jX32Qss9hYfSU!_VT=}lL|XaPjvDa(%Vm%VQChouJ%59fd0(M$nE zau2qz8NO3XCw()P*kg`=d)-AQl zr8yZ@y+rL(TARc#-!5WkSt3D8T;-LORlrCgEyDkify}v>&Na}kpuXvHM%}t8%}}*G zxHf`)=Nf0+f>xjZ1MIa|$<1#vBCuz^M|}KYt6Ft&;{MIbd1jXUvv)`89AD=s-{k4B z?&9XQE7fCdZ~f@{vBXcvxJqt-CySr8H5fDU+-Z898yAZ_+sza2{4=1{U$|w**zMEI zwNBkKFPs>G>akbl;p}hdPXceBtoxnaow0i3WWRLxrEGhO89VPSjxNsM?^k&f=l%g_ z^71I-)esidbitJ5e(hu1+OPcMDuVqg@Ybdjho(KTG*FW3VoFwfRrCUfk*VzEA6F-b zcSU`J_n_dU!vmF}yK#=A2Xg12FRD1&Mg#uX05(7LC0_E@g{z%N6bdws`&YN_7pj?t zUf4LV(eGwyQ6Mvn6l3Ht<*nW8l}x{~mCoJ*?L%+dhO}MUuxqxLD;YT|dYy`Osbfm? z6CJx?mbz@0>fXo5qFW1E_*KH|i>-;$!Zg0|;=B>nk{D4z;~Qy!jz-FX1!;Bk;uwx@ zC@s2Hgi^X0@!Y}Jq93SKUb|rV?sBcOR*86Dz-#CnJ}UfD6KKC;vC+Hh{&n^w!Spoa zwQf3{_Z}%oMm1ZE60?qxW5Akobo@*B%tmka%`_JVXT$r}Os?3N@n62LHqB^>K`oGF z|ID67sX7`Ah=spfJqp7a}FC114ilH@)_h|sCE*2%VWgXi#5&DoS!5uB16`W zPeWCkU~&3yv(B=1be-8R{px=@F-|ZXRMTA*hTPJL7O1NF@VBgNJ;LUBPP4r=t@kdn zY?s6(Q8?`zl7LDpf2!Rj^((;#o?a60J)ra1OHAv}+4ID6MK=S}e)d=!zw4k;Y65$I zoe-_mYf0%mjDIUdg#_sB#}1BOPZqZ}0;Frnb%F6G((x*)uMKg?C(Jf_Y{vRazeJUwDpB9XXr3Q)`Rw%h_7A-D$BTr6x3rl& zNJu-3=FJVmNu%^iA{x9R$FHmvR-Wyi`ojPcpiGR|x>O8RlD1KY0H+i9liK(Zage$6wJPnk9lPGlhj3Cg~SJT1B^CO2^6NUY2t-}L-J$O$%p{m+BR6D z_!FUEGx~*0c&^SPQU#5boQyNq!Y`zq-zvsm81^P_AQjn&v<$P9?mw7z4JLwvjhT3m z@P@ieJL7O*-M|nj2JeC|iEuzfYONSkn9KYZ@VLOjItE4@u2B>nhhPmS)5uam0&Kz! zFGx+PtXch#F}9r{akg$J zO!(CE#>gr{SntV7rwAA8=f6H`btnTPrNpE(goKXt=$tF-6-_Iq%P)S(kDwbdsf#Ya5sLjuiq<~JXMHF#e&MzOB02aF<#<%wO$ke;+{{Xxqd%>a&)QdVev5 zHIm%l&>Oa8|_K+$8sa+&Uv+@w3 z6cXbYjoStwwQe-2aF9jwOL&k)DZ!Zv!a;{<;k;7z@qj!M!J<*B8V~>l_qL*Z zCJRMdlU5n8v=`3pIoNzYK{T+HJB=irH@k4pPROVYP_7eRYxkIAFKoY4eQ=M54i|Rg z1Es6mykFv?q0*IDY*HdH;j)t+@aRhfeN@Y#qBbd&qrwS7d9DY`HM& z>%#RQSl8tF2isNE`+T;a9q1)K-1Kj0De7r}@?p@l8bwoaUcMElr6X_$4Dliw^pR;@ zQI-%a%R)W}Adlma6N9(ow8!#ep*lD&2;O;taNChVLD(4AM7e}#A0yJ3-KQibPonuH zZzgIC8_~dMUcZ#i3j#Ja(zap%3m2J~z*_GOD-6p+X{44 zjqV!!JmPboR*_7%Rw=L$mN3uQa<#wAT2d*}@uD>ktR^X)8S}NZrR%M9o)h}kt8mrt zpQkMxQriIRRI9#jOF*h53KEzkep&sv$gyFb)*(FW8}K;xs~PC0>E&-OWfunCz@wz2 z91qp0s@_)#uV0;VNB_0?5jJK-&q6PK4mu$n^T~?wVnbr>pQuoI@dleS$cN+J(|qnl z!TnVYM&W0M8GHLyU-IbkCqPj}n)748P*t>qdlGw67SAL(V!s=+Z(0FL zULn}@W+nb=v3u@>lAKIO$$DxC>wD-}AKNj%rE6*+Xo$5KwV)u`5-h1zp_9kyr{hm7 zn?RmyZ!ZZ;y8Jp~#KSAdXj-4Opl}7A_fiVPW5;mLdjx{Nqp!ba&d##YZ6v#%0y&z) zf>yEu(eN0PqyBC^Z7cBm1)7mqz*_pW_YX?xa{9_2=dY^BBjL2}RB82_eH&l1_H0fA zexqY`A_+BxN>IclWor5p2}qq#Q23+93K!$|hwyd`j6?l^Ou9nrye**!S0tG&*2#&L zz?os{Ogi6bm2Hr*$@8TKkEhyW*Kc^d18KBd9q_P^0Kf{WXl0 zXB;)pG~Jk;?Gm#DT1=Eoh)5Y3xqx%$cjCHF0_=*W=4U;<&*Pf|pXN|7k)i6JaKKg$?6otB;g zo5d=&fYs@82~Uo1IcE91?w4keVpOA%K8-_m##14XaQLRlf>U(s0N0?F$MKYJbf8MD z@#s|#*E>p_>zY&ik&C`FHQMKzUEHte%jHOH5P(&^hJ$i87Wq{xDi3w#d>_b!`i!As ztuKqUy(<7hKD^gmg|A480JNs@;a!>BILVkk?L+YwMQ8-e*skUo2Z4Rdy_bVS8|MONedE7Z30 z%^$Dt+I5M0Snjh8o_FbsoWcn`f}6_T5>N$VHP0YGuB1Cdk||d`Vu-fmov*Phnoa`Td%q!FvF2v~#FYN`H8C$yR!{Fd$mUIyD;|8(0`1 zBi^xY+w@u6KHYGxvr(nielEfj&&^TN#*WkAAi7MnTNIwwk_g_ziy4a3N$y|MxTI1P zQ3o5SQR^UMbQ;6(3fulsDSZ=}EUZc8F}p%t$)geg430x8*l>Fwm(hDjp^>vP_RbwJ zMgDHLsE{ROmU@24Gp!!>5YrV_0;kS->0!+r)KVa+Re-Vgrp>~a7476g3t*pD(O;d! zFa+u7t)U~(`=5WmW}1Ox(!tGH=NRgfKNmUXq}1XQKde0Yz$?SKp9SK|(eLvK=u_98 z$fCl4g0(hS*YUUkU4#{20i)&HrL?9;J)8cHRbqn14J8j%RpEEZazFfkG8iPxN((}{ zhN;1Ov~zu!^?ceA{2G7vVB3WWxWkbEiAtFy)%*KRMbv9=Fi8<%c9D&Oq02ZZK| zR*hMBMDc-N3u5|9y`-ja4q@)b)&fSwrolw)ds5Pw;&h zI5}MKf=$EeugH)1)nC_ZPP1|)KK8;vLl>y=Bceou^FnqKi*gaZ2;wzjW?+EEjR|ls z@5HP{PW`SW3?zXWG!JwUA(*?{HSKWhy3voMw~)Xm&@)bEKli7dN0~lcb2gUfyAY_D zVbm5ukCsHsdNNrD4C3!%Cs0<+uPVYkdr>p$b= zAeNJLa6qLZdYF-`&J1<(tNM2Llf&uzPqh8S97?a$Jim}9)do0y4E?KT8XEc3;+mij zwEsrBbIIKf>h$n;`}V8jg-VUR!sdag5`CaMp6%`ZLuX1%#fxEH?s#BnRBWtU?qhq3 z3hrWhBM^joX)<~O<9u>UDsQz#=85~55sC7%D52-c?Ze0Ay)zdI!$0ZBlu9ai$jnrM z6)5rdN-ri3jh@LTEZ14G%)UP}@q%xebAb@hp0d#Lj4n+GluoGO7BtrO7-f>1zraKJ zA#)?*&u!j!VU{~PCmUgYXWuX52AOXvg*UBbCfP|WeB)w65KD$Ryh!XH}HflK{zoz-zs($4mBH7*4fiDIgEgSc3 zvTl}60}c`jqzCTsG7P@t6XXe2W)O+n_-#`#)aXjby!7WIs(SNeC2{Dw3co%kvOymq zw7gPs$FI6aGP_=#4|zPf+%%7e# zixo#A40!ouEhYa@>9Si;e&yZtW#VGBYDZ7LHhfOa2}>dlChLwtGZ1Q^7)JvwU<5wO zs?N7hs@FUsyQd(wjl-8{af_QqI7%!_-a7bwSxY>Vc>07=p|XwqH9TU7)_jBD$;)C^ zME|YPN5=*Q?!V|KvvO*P9#bpNBHs5_$;7;_7NX;VkdHPTCSNy(nB7FF+`AC?3wz}P zs!?SB!T8-7GbWxm!(eL3$TP}_L{SI+yiV|Bu5(~Yv_Q&Sk!)dL8i(DZD<+-k>D_>{ zoS71P;b}HcqjmcU$5krqNLtH^z9VW+iGdH@PtKGbFm?A2B$Qt|li_#Y}bJ+%guKuyz0PjDD*}>llr&-wLA= zu0%mcw5fdmRrX+3y^&lEKiWmx7}n{}Dj;C3#heo)^l1 zAr>;}F>^#$QRe{I9|M@}l1MGyPl%e?4TLAOQ0fcHhxqAx?uY1p9GIp3b@-Ou^Iz3{ zmSw-&?~NWD3+(2l9=x#7W3BuyE<5pXF#Z|~JDEF*c@52aSKAG*^X|$=tUcAW^?GaP zS+1?db-j@)oY&8n3csQ&>q?)89O*T+tQE}%aB?kI=5I=28+Q}Wt{*a1V`2M`JbVPV}T_iU>AOK^GfR-U<8h9h5e>z0*g&4Xb%;f^RS zTlY-6&?=u*$F{vK&NFw7dy%}h9UY697AIeiZxW%sH`b%dL9#!}Cgd?+zbfr2f>Syt zrb>QAcZ{yFtXkGPy*aU;kBT>)-xL=XIKvzg85=CI_}dO)ErNo8t`BGXD{!ZEN{&z3 z*|%p_7Ak(S?&a%SA!WVX>M@p5r^5@j^0UUh*UNTjpNp{JGj!hC+&HMDeh;An41XP(%T=WO=#ch*{;9;=3&@b)ptq5q{yt$L0 zAd!szV!NN2j(ZW!087!S-73CXG6r(K^z!(o1Ieyu#8%sH?ez`2pbBESL*6oa{uR;Z zH5J4uJQ7Cg8Cggp*E9j=fv!9qu6dDzC4}6A*_Zr9dK5FI%n33uWO2DqwPsrBXtq(= z+^C)v3?pXe3VLVxQfRgk=@#=_%_w_xe8R-^Q`pc3ob!1W?mpmyxB#q9kGCxFiV_a1Ux@=K9f0(L7FmVIOhNL-na`Erd33#>;}AFdmsC z{{UJL7FdYJ@0SCTPhnZwj;9^80!Z0+u>Ib7&(KxLS#VW=B=ubS)?TG-B(|75Xd()r zHhyAqIQA64n@7}Uy|1Zgze8d7rE>BqHh zLl@a?Rx~-wqc-xnYGM?mpESGZMwf3I;}cP%<}FW+Y<( zyGq*o(W3EWya#Y0P00aV|v$3A@a&9oN_Q~ zv_Xpk3hW)K+(lJLPC+@&X`n5!$ie7pISBv-Bm+&|kGw@7+8=gKNa%W12ykMn^L})1 zIO&F_78%KIJ5zkcY@j@kS^#^T{qIgiM13*99cisF9AUpIVRObC@Sp{efE`ZSs?snd zoMX2Xw-Wrg&N6#;toh{zUBI07=ZXMXu1N>x89Z*Pre+FBY@b?Wq%a_WxvC;V=Q8f# z0g6CgHyBq*hMr;~xrLQd!D z#ULFfG5Awc_(!&AbPtc1fGJQYJu-1X3!F1^N=`ZLOjlA!#~G)Q)1CpK1vth{HzOX@ zt@mjN8-1t(rQ{;!&UkPz$VGU~{97)WdWGQNbgygxd6@P6YmV`SuZQfkm~Ct#jB0W* zmU00lbJ&t_K9o6G6&Uj#Z^n410mgGkRI3#|MLYmGHAE9xT}x$s1QCzLhgS->S>5=ouv2oaoXEPUS~J}cK0>vJ|57b(X0U44a;ZEley=h z_M=4b{jP?PkT+Z~A><>HNa#Jdt+y+^H4xC`*YIS1lg^F+B}oYEbHa7MgamG5wC}PnV3a`g(V%bnP{7 zu9HxT63w*9894)R9rM?k0PaI@4m#3?3`hhVb@nyqnvS`vTU@=Ix5v&gg_B~8E1t?n zO3zEl-&zS2@`aXV1gwN}k;(O@Bh-l)s`pVX#jLQn%DNRljXFmw3!L(*PDj$YyAKxW zrrA>F<`@H*k)*O?P*vSX-uC5Q3G$at)6cR_Zarf7@ zS6(Kz5KOYb!Cpe0H!gAdaa$VRr8R?L8}BF}V>??prUs40^fu%t%pOMV&J98}F)`e* zNHBO~z%|6puFvHXq%4H}iS!i}oFV#pXA=Lf$PamWPH22h{?HjhElqh=&F(mM2{0 z1mhIgt`r|F@w<{S+)@K&P|0a(x7UwWF-W)g*x zLP`B;fv>xd@v5@!dzA#?LXrSAF5*T=sL9I)7|7zNL-y@C89!QP=={P10@%s*#Un^a zh~!k(jZ5Ip70Q2^L7a!N@%itw0g>DLs1Bv6H(q09CL>I!AB-&p4-zYZ%ZQzW-Ad1USL2ybdljMj$d&q1HO zIH_cn)rbez@T}-nlI=+7z?1c<$&ko*a2RJaTx5W@cW%hfJkw04djS0U6HyJ@RD;DZ zPCV0<0g1+G1&eT81A(4N#xqm-kCV=E+N(zpKD1m2FSV=7n5Ju6#MbRT~`%Zrx_=%Pw7(kDQs)~sO8n;`8o`Dr#<{|+nHpMBaH_wA;nRa`Cbyr zzcvZuw-x3$xAzzF?v&E6()8^z(@D2TZ2@L|#htpbBmV%cT&|6y#SAfBPE@;X zV2Aj571v84c?7CP)L`EI2>!ILI~UHQZe$6&ocA3KK1ri^)q{XHbv26_g5vHxoGWCW zd)4^@Mv9T(AnHA7Tr68llyx{^--AdlB6Gn6`ew4rF+#ae$0VO>V1-1n$g&aqBmvf) zz|}6UKw*{7BBo}!<&T3l=5%%j@-ayaxpDZZ$=bF7~ zeHFagxtWsPn>%v2KA07eXRN)1$nb?=nQxqZ=JlWtN7Sx<$EDoPz!H(10qb5s%u8>9Ob(lJ<2e*?3Fob3+TSdQ#rA?u z4o_3Yj`^%h`Dc>u;n_(bz(RWM9^{ir$jRf< zn$lz+m}DM!s>bpWC@RM|#s^A3EX*T7&U2H_D;`^bBq|qiY;rxTQu0vI9y)h5lREA4 z%McC;;(#P~GbUqTr3X3VG|e6#?GF)JT1H(=kF>CEag6n-5%9nQ8v~*5TAmKJFXKBf z#0(Z;kM~VP-J;o1-5Offj<$@#JKK=MBjzE;>MM}Fit;GSn~>|%?kGRXy$i)Q?(?{T zN%?^Hu18xi+e00wL}?UZ*c#3)l_YXzS#nR9L86BrIij^7_hg8}0>-%cd!MZU05A_q ztk=q43PwF?ziUi`xM1;4;wR-_IRsR|@#|C`;d?i}DrB5&C68?LNerFgj%C3B)Noq} zM4*5bn{da{saWdb=Hw!#VklTi?hXj6{$V*Ff;$=jYQ_|f1ro*?fbWb_2?p-G(wPA` z?@}?15C{f%#}!fF{p&YSPZefMxS@wKkO1Q*smrL_q6Y-HJpyt~CN#?<7KPl*HF8NmYA_l`R`0Fb+WSU;Pt9Nm2Z^rO=KN+ao8eZfx*p6 zm+{Ri>{cz%u<269jVE&Mq4Az-h4!;$Y6z0{5ZJ&~ZO!=#A&gu|{%%UJ=z0p}bqylY z8|fKh8x_9j>4QKU3F5sO&@8gbcuYOgl151X0Cs~c zanM%Ph_|+aStasgImBpJB#uY(G%!~vHl=xh*7iFUj#f*C-hU31`S4f%8mzWW3eX!ga!S6a0>>XtqxsTE8#6Tb*?(@p;H-*&TJ#G|LBW)muwN~ZdChsPfvQ++@$~qKJ?;9=rS>i zRvpesW%AgSR#DUg)~uaSj18Gm1~PHYbQ4=!&VWl2kSdkVk!vhlQ8q9+4NAdt9^+JY zz(vL>iK)s!P{_Ch<%LqZwz!H`0yfyBfN|EVd2@a5EwSnbXaimyNs-aFXV>diA5dA# zvw^vnZgaq{d~fPO1HMHxyP@mHtpIdQeiqP1jkT8?gXvC|`5HWc3l8Mg3?Zj&hzVob zudbDKC<;J9>c*If4y)z9R2<_KJ+7%3=1_9OwPV~{PYk6U3FiYH>hoF5EFuQnhB+jj zxui19#rnGmEzc$Law#U&W-&QJ0|Et7Hn$O|XNZASrB_15fmJ6w_ofEDrSndbqc0^f z$E`yqptkpsWl26>7vI*XTis1>DKTK=VDXxvsoYB?#4b)7aiIv&OAAZ8ho0^H$yk=b z=sg8<`jSM9sSx3Fn$U^oXyj)E`Fs*PRz=GhCN4U3rUN3lk|FXr9@QS~$Vud$=98s0 zvJVu*E8sPHR*QNrbc=b!gNU}ieMbho$dXSzYq;>6BWQ**hWXoY^rsOsekNB#Y-OIqvaaCf!YfV~Wpm`;V?e?ZZ4ZYh&m_64MtlMsthR|Gtkh%GbQC{-G@=n<5%pj1U7OzFyoA8 znwi2E{o*Of#xeTUJIipnXq4?Ij8YjYS0XG*Xarz3?)1+x3 zB16-FYY_=Aj-1woyEJi58hpZN!^lMs_@5MJs`1 zvLR*-$mz{>KMo@oUM~zre7kpUJ9Mr{!wtHBq|KNA0G@I3e-qGGb@01U5b7F%hfecc z!WDM5HjMH~J!&TX)?8MnORX#xu$f!$7Vqg^S*$po>D|8q4R>BD*0yCQ(&S|AvO&dg z*H^l9>x8wqj!yZ;Gg-i?m<|bXz~+j3`FoFEI%bO0gVFxbr+P*T;~);l6v1%Jpk!{( zL;BS}D(P8*+Fbmj3zaxDZ6zbAB@gL9i>7jzQZfMLk7|*wioi%X!1dy?WRC7p zpR&pbJmpRZrN!#u4V1x1$KA-qFfC{kNfb9boHT6tUuxGEat0^m+t4j@h%eznAhL3U zIRI6Ay-36%45xN-Lmp@m*Nc_UKczM9g0Us~a(J$8Jz^|^?a3Jju&Ya`MIv!0MeCll ztTSEAcL|1UfPE?`ysI>JC>3*%Yb9?c6Swb_DB}%GmT9ixRbn;{P7hEiSa&q1on|GN z{G-ycO}mjM`AG}Yp47`p+vhn5p!1&fBgkLpbp6=qzQ0;51y$Y?5&XW4d;b9Ss(mK? zW6iw3D9;$|Y8#7yTR+OFyqJ{C7v{$_tUH}Otl~J3=OB#ciHuh;l_7FZTE$DCEx;{< zw~lIiX-~_XZ9JZ7*jFmc6fqm9Rx6*83AYCXs@fCO_%9QDOnjao>Q0!bWg^b{vx zYT!vZB;}8DTKX=IFQoHjC1X+u82i;)(@m0T0h4G!_po`zb?^x7rP_lE7muYOn(?Zj z0WbzJ$E8N6$%~QD)l+n%89X-`6*@`^e8h89E0afbLv1IoO0Z`j$lHg+XYf zYk-llKY0fk^{B0-ble*pobWnO1;@6Hm&{NIVe_qL&!)n%F4Xx)Bhb~)JjaucF~}66 zaLKeNAoGUmD6kPj6j7kKfkN%-1w%db(zjiJ^R!e~F&MshoTxu}bHNn@uy77=MN1kd zigNNQ%OUHKewDc#=`?#^=5C}`C4>tzN#+cw82swm0~QfU%Je?9NEvCE2^mPtdF$y- za2bqpsu#*Lq#BQ zflZd|#|{DKI0w?RZ?9xae3=R7r>y`tQj8g{A%TDw3On}(vY$k|&ctZhKpDHxD$ zQCF=k;tp@tX(*PQ42)mBW%Huc&vO*tXkr@qD@EP;sh$Rqj+j7yk?PbaP@ zLm08RyAH>&3;6L>E>J}0VD3j1a!F5}2O0VI5$rpEI;kwcpe%%7(&|2iVxKnb)5ND3 z0~w?et1bh6bi0r)0XwJy{kw#=C%$n|+|JRdTnsmQa*$)jN3RuK+%x3#6u`9%%_&ok z2YQlePDeRW+Nz|zN}fo-6cZ$^u@tj=dVA0ymR9IE;}sln&vPM;2--&Pj)UrZQ^2%= zOI%9QxBT*p`nUL07h0vn(fKL17zaqA7$1+X<4WU2hKAD7NxGlTm;QM|cpp~(01Bxt zqa%+h9k9fIf-W=lJxy5f^ht56g^?A)#_hGbWDM6;9oV<$>~^vzOi2hhtmQiw7;_v- zwY+%}H<>5*SD-)Ey&vHimg4VKxn(Mm!l;~Ja!oehS&A1{OB)1b=OP8>yI%@w4SS^A zu!=b1ia@_2<0q-CobG6$W0mnv*%kM;4&#q{;jUR-GwJPJ&x*ponY0cMTJyQ3D=Q{= z2c=vL$ka~Q2mCQELqD)#sGr7*<_Ne2smNX>WkiZ|hMM|jft`LCP*cfDtQX9*n zGIDS>f-%yei%E(_Eh02bFhD&GNhX953nwZ0PZoxzC0ATkx$Md0*+Z~j0UYC{M#ANW zMC^z#Gk^so1P^JYUKdMvSKiE2@MIi(izqBoZ}EQ5es)}ori>TACy zBtaxeyo`(wWAE)=jQ$GL;cIaf^~g}0VvbmW8@lWq^~dAEs&V*VS+U(My~NO&AAl`N z?sLA0yc>ph^PCMfR{A%L+vShm={(z=UCz1;Jg>W06 z%kiy)ZX}LNS%WM=ytZW-IPOQSL*czES+cN|-p<-6B$+}Rt_+NLz{ezUTd~_;7L`*^ z)1>nLb!0Dx>B9E!-l4f)a*|d&w8Oe%5*^rLs(NSMw>&%HyX}4{&5%+e87f!|pF!$s z#2yUs8e9ve(xppva>SAj7pdv(TYekxwz;R<-Ai+(D24C?O(~26o<6;*Vxn<~PV(6$2*?(wc9?V}~D|bc0Q}^O_&9+gip6$!P;_K7iu0zp|3? zX7XY)$h}lY-`HZGwC;t-W(`SOAjlZhiKweCGvA8PgTvCjq?0C;jkPnljzG={I5;0e z%>%-kj4Z6Su|&?i0@%+TIp}%fk7$L+%IkHQ)Nfq&#V?(NcHPg@rB1pX<-!Psm&q0t zSrigT&r&+|>-{N4i6yjqrH9IV94wN7wD!m!pzlxGF2U^Ia-&Gj8#o;>8>LbjjKX)> zw2q$DuKF8-u}KjV1sl*vgoEFLYA^UkSjieLpLFi$4y%!~>yDIrMc97N%&K)P5xjsg z%`!XXNg0EJ4?Om%pF^{Y%nlg}IZe__jGt}}X_I(<0}zrcmIDC%r+?{;)Ap;VxfvYy zfyU6lspg?qz~hlxa(F{jk{DLf%64LYXOL|f>?%pTH9nRgj{U*Cb^zL2e)ZIPoOGn- zm~yfUCTQbV4bO2_USPnH!TwcY^m!tk;)qIJRAC-GF)hFVbv1fl25L)b_J?4rurnb$ zP7eba>S*UkIa$jPt#D3QgH}ORUOUvXTiaM&eV%)UmQ_++VPBLH+b8+rqz6xy*almu z!Qt&GpjT~D z!84?1aal99@z5S9=0fFXG}Eci&IhF+mB!P!9(va1t)^(Q&v9`T`w1P%SR%LDib>!M zo@zO~H)ItI8r)17M&aeKAmj3*nFX24UQ6d)JB;A)KMHIvV4gV_?2WIk3#w?IZ1kQj`Cp4C(POAZ0x zn$iCNgnGzMku}VwNBLGbrba)VL3QEi=5+qb`AR4g8SW5;Z>Z^2?GZlBl}?~h`(XDq zRrN=fZM&2%Yg%syU4o(YJv=WNWpda)n5D7sLQD3SyVP?WWA}e&OqV{tH)6ktdLw=%9Ac!x5#2Y?PvN^wEqAI880Olx3NcUZb)X0 zzt%TpQ`?^ArOgdRnYwhZG}jQbW6Xts8ScL@{{YZ&R(v^O{k5xonb^l`3~e>UtJP3? zXSpN+^{de7K18iGy`CiV35s7dI2Z>2jP*S+irTcW)3o^~u+#0XWR~k{5?&my*hBt$5mL*78VI3o4FEuF`ouJN2x)_-C@YFx~Cy&PUg zqi9!=z^%S(gSvE53&)R?Hb!{s>CJL_&7Ib_9CF&(+)XO6%atP|@uD*B4RuE-1{-r8 zJt}ymUNUovxhI9S&=WQd^PC{_6D)m(YTlRNomTQzS>(2`Mb2L4P%?c086?&7B5cYE z<=Ij(mScfhPBv@qZ6r2i>0J~)81Vg+er#HrT-?IL5t%?|J;+>eqwzIQPJOzp z%6J$fk6M>L#VB_vf5JTWsLb)pcQUANCJ(x~>AAZ8LZVF{Q@xHr!aGCf*OV^u82%fM8`+nj#@dS$4kS75FEy`q6g7 zL}&PaNw$t=EK1Aex;nbxjy~`?^j>aQHq&zRKww(<1j z)YzuQ@fM-18*y;rt4FllVG^pT zVBCcVkT}M1^{Xr5sN!PAet5iOKDR*Hz^sSy)Ro6 zYcj_%wY9ZW1wf72gA#I2B8s&>uVH}CP4&@o@tG4hU6-=h%@{yMHEsQatn1h zPd0q>lja_3U$P=gyvZw&1~<7lqKX(Hp**!J9$o=#?>yC5wJGJC#|tz}UzRLeC+Wo$ zQv%zi;zQ;AzD=dJ;3AH^=ca#JuWw|9E>X_*QIPI8AE!B@ia;_8c-{ixR0TUg+ABKX z2DoUXR4KRkP%rYLilhYkWa+26n^+Yj+E>gZl0Kf5B-egaODaPVjb>M992Q0=JdjUb zKUyfI)H)odzjY>|do|05<1sjm7BmZi*R@BdYFFA-)NnP#2_b(3lQq$P?AbmAYS9&-mA^6-$@GCM$ttZ;G-;fW#_pBZla1v8M7=#I3*(D;7wwu z$#s(eHZ!=4bM&kkd|#?u-q~1|O{N1Rj{BIq55#fpMHC^kM*bmTdo1@v-)7x$9N%$p zbC5e8Dy6rHCqZ*Pv@yXQv~m=MRati?IpiD;M*|%wqK={~MdPhT>e>+TM9x{1vzB0X zkM86TN|1a+yKAL}O)kNRVi|%ENCTkfiYTU%0-U}pn&SFk_BMhr0|iwhudg*y^T%42 z^;Lq@2OG%Pai7oHiYTxd$*$ecarV1~hG{o&uAd;!`y-Feq)!&=)@dcAQbdq5l2sv9 z7(GDZiYlxmM7}7yF*K0F1Z(E!X2Fh_?Soe5@qVJwtSpx0Wm6-Q9!Wfo{(ufBqLqNn zZDRIFyr-9NJ5`*Fwmkvu_*RCUcXf2qBsWsPavP1TGP%LQ9Y$!Pm~}5&PkCW5ce*n3 zy|95v$mgDU@kDnS+Q{8K)e8Dxmd<)B@%NtI*$;xWmq z_PUI>7j`f>R5uVCg33^V#scVh~~NgIGU9C9e4 zm>62ExY}jN+yFf|tZOjS-uX=A01I*IIiiYaMzz(HQ9~KVS&vc1Dmz;kWD+(AE0IMM z0x8`oj_wqV*>c#=dax~78*iL;$Ua~OGes3bD@h0h9Q&No#2aY=hzGYkQAGd^8z{k$ zk?3g`a2Vd$&rH!p0o0Jn=r*HZGw#6vjN=)m&SZ(&HI{lu<}zi>zEh3JBFlAot@Qo|Vt*SF>F_moC_MY@NBq z6jF}jk(O^HXGsUh$T%u%tI}FasUo?N!FK!KFIp(8mc++%R{b|>(MOzoqXc`J&*CI! z87;sEJvqe`R%o_OJWmu+1(bl}upCtzTS0Siu(@7(<0q~tqNqivep`o(4iKDYo|Mlq z#;+r@mSWzg)82|H0jkc@MyyUdaZhkn0o;0L0*Wg$LMYjc@wR!v1K47!H17q>jD!s1 Zx3Hp$XqHKHeK*Rv + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard new file mode 100644 index 0000000..eae1517 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Base.lproj/Main.storyboard @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Info.plist b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Info.plist new file mode 100644 index 0000000..40c6215 --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/ViewController.swift b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/ViewController.swift new file mode 100644 index 0000000..435714c --- /dev/null +++ b/TaehyeonKim/MeetingRoomsStatic/MeetingRooms/MeetingRooms/ViewController.swift @@ -0,0 +1,25 @@ +// +// ViewController.swift +// MeetingRooms +// +// Created by Lingostar on 2015. 12. 23.. +// Copyright © 2015년 CodersHigh. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + +} + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj b/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d99feb1 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.pbxproj @@ -0,0 +1,533 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + B0500D941FAC4A52002E177E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D931FAC4A52002E177E /* AppDelegate.swift */; }; + B0500D961FAC4A52002E177E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500D951FAC4A52002E177E /* ViewController.swift */; }; + B0500D991FAC4A52002E177E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D971FAC4A52002E177E /* Main.storyboard */; }; + B0500D9B1FAC4A52002E177E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B0500D9A1FAC4A52002E177E /* Assets.xcassets */; }; + B0500D9E1FAC4A52002E177E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0500D9C1FAC4A52002E177E /* LaunchScreen.storyboard */; }; + B0500DC21FAC4FCB002E177E /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0500DC11FAC4FCB002E177E /* Money.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + B0500DA51FAC4A53002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D881FAC4A52002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D8F1FAC4A52002E177E; + remoteInfo = MoneyConverter; + }; + B0500DB01FAC4A53002E177E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B0500D881FAC4A52002E177E /* Project object */; + proxyType = 1; + remoteGlobalIDString = B0500D8F1FAC4A52002E177E; + remoteInfo = MoneyConverter; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + B0500D901FAC4A52002E177E /* MoneyConverter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MoneyConverter.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500D931FAC4A52002E177E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B0500D951FAC4A52002E177E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + B0500D981FAC4A52002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + B0500D9A1FAC4A52002E177E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + B0500D9D1FAC4A52002E177E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + B0500D9F1FAC4A52002E177E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B0500DA41FAC4A53002E177E /* MoneyConverterTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MoneyConverterTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500DAF1FAC4A53002E177E /* MoneyConverterUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MoneyConverterUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + B0500DC11FAC4FCB002E177E /* Money.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B0500D8D1FAC4A52002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DA11FAC4A53002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DAC1FAC4A53002E177E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + B0500D871FAC4A52002E177E = { + isa = PBXGroup; + children = ( + B0500D921FAC4A52002E177E /* MoneyConverter */, + B0500D911FAC4A52002E177E /* Products */, + ); + sourceTree = ""; + }; + B0500D911FAC4A52002E177E /* Products */ = { + isa = PBXGroup; + children = ( + B0500D901FAC4A52002E177E /* MoneyConverter.app */, + B0500DA41FAC4A53002E177E /* MoneyConverterTests.xctest */, + B0500DAF1FAC4A53002E177E /* MoneyConverterUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + B0500D921FAC4A52002E177E /* MoneyConverter */ = { + isa = PBXGroup; + children = ( + B0500D931FAC4A52002E177E /* AppDelegate.swift */, + B0500D951FAC4A52002E177E /* ViewController.swift */, + B0500D971FAC4A52002E177E /* Main.storyboard */, + B0500DC11FAC4FCB002E177E /* Money.swift */, + B0500D9A1FAC4A52002E177E /* Assets.xcassets */, + B0500D9C1FAC4A52002E177E /* LaunchScreen.storyboard */, + B0500D9F1FAC4A52002E177E /* Info.plist */, + ); + path = MoneyConverter; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + B0500D8F1FAC4A52002E177E /* MoneyConverter */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500DB81FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverter" */; + buildPhases = ( + B0500D8C1FAC4A52002E177E /* Sources */, + B0500D8D1FAC4A52002E177E /* Frameworks */, + B0500D8E1FAC4A52002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MoneyConverter; + productName = MoneyConverter; + productReference = B0500D901FAC4A52002E177E /* MoneyConverter.app */; + productType = "com.apple.product-type.application"; + }; + B0500DA31FAC4A53002E177E /* MoneyConverterTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500DBB1FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverterTests" */; + buildPhases = ( + B0500DA01FAC4A53002E177E /* Sources */, + B0500DA11FAC4A53002E177E /* Frameworks */, + B0500DA21FAC4A53002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500DA61FAC4A53002E177E /* PBXTargetDependency */, + ); + name = MoneyConverterTests; + productName = MoneyConverterTests; + productReference = B0500DA41FAC4A53002E177E /* MoneyConverterTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + B0500DAE1FAC4A53002E177E /* MoneyConverterUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = B0500DBE1FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverterUITests" */; + buildPhases = ( + B0500DAB1FAC4A53002E177E /* Sources */, + B0500DAC1FAC4A53002E177E /* Frameworks */, + B0500DAD1FAC4A53002E177E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + B0500DB11FAC4A53002E177E /* PBXTargetDependency */, + ); + name = MoneyConverterUITests; + productName = MoneyConverterUITests; + productReference = B0500DAF1FAC4A53002E177E /* MoneyConverterUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + B0500D881FAC4A52002E177E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0900; + LastUpgradeCheck = 0900; + ORGANIZATIONNAME = "Taehyeon Kim"; + TargetAttributes = { + B0500D8F1FAC4A52002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + }; + B0500DA31FAC4A53002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D8F1FAC4A52002E177E; + }; + B0500DAE1FAC4A53002E177E = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = B0500D8F1FAC4A52002E177E; + }; + }; + }; + buildConfigurationList = B0500D8B1FAC4A52002E177E /* Build configuration list for PBXProject "MoneyConverter" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = B0500D871FAC4A52002E177E; + productRefGroup = B0500D911FAC4A52002E177E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + B0500D8F1FAC4A52002E177E /* MoneyConverter */, + B0500DA31FAC4A53002E177E /* MoneyConverterTests */, + B0500DAE1FAC4A53002E177E /* MoneyConverterUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + B0500D8E1FAC4A52002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500D9E1FAC4A52002E177E /* LaunchScreen.storyboard in Resources */, + B0500D9B1FAC4A52002E177E /* Assets.xcassets in Resources */, + B0500D991FAC4A52002E177E /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DA21FAC4A53002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DAD1FAC4A53002E177E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + B0500D8C1FAC4A52002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B0500DC21FAC4FCB002E177E /* Money.swift in Sources */, + B0500D961FAC4A52002E177E /* ViewController.swift in Sources */, + B0500D941FAC4A52002E177E /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DA01FAC4A53002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B0500DAB1FAC4A53002E177E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + B0500DA61FAC4A53002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D8F1FAC4A52002E177E /* MoneyConverter */; + targetProxy = B0500DA51FAC4A53002E177E /* PBXContainerItemProxy */; + }; + B0500DB11FAC4A53002E177E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = B0500D8F1FAC4A52002E177E /* MoneyConverter */; + targetProxy = B0500DB01FAC4A53002E177E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + B0500D971FAC4A52002E177E /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D981FAC4A52002E177E /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + B0500D9C1FAC4A52002E177E /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + B0500D9D1FAC4A52002E177E /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + B0500DB61FAC4A53002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + B0500DB71FAC4A53002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = 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_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + 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; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B0500DB91FAC4A53002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverter/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverter"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B0500DBA1FAC4A53002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverter/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverter"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B0500DBC1FAC4A53002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverterTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverterTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoneyConverter.app/MoneyConverter"; + }; + name = Debug; + }; + B0500DBD1FAC4A53002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverterTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverterTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MoneyConverter.app/MoneyConverter"; + }; + name = Release; + }; + B0500DBF1FAC4A53002E177E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverterUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverterUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = MoneyConverter; + }; + name = Debug; + }; + B0500DC01FAC4A53002E177E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = MoneyConverterUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "Taehyeon-Kim.MoneyConverterUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = MoneyConverter; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + B0500D8B1FAC4A52002E177E /* Build configuration list for PBXProject "MoneyConverter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500DB61FAC4A53002E177E /* Debug */, + B0500DB71FAC4A53002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500DB81FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500DB91FAC4A53002E177E /* Debug */, + B0500DBA1FAC4A53002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500DBB1FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverterTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500DBC1FAC4A53002E177E /* Debug */, + B0500DBD1FAC4A53002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B0500DBE1FAC4A53002E177E /* Build configuration list for PBXNativeTarget "MoneyConverterUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0500DBF1FAC4A53002E177E /* Debug */, + B0500DC01FAC4A53002E177E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = B0500D881FAC4A52002E177E /* Project object */; +} diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5566428 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/AppDelegate.swift b/TaehyeonKim/MoneyConverter/MoneyConverter/AppDelegate.swift new file mode 100644 index 0000000..cea619b --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// MoneyConverter +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(_ application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(_ application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(_ application: UIApplication) { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(_ application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(_ application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json b/TaehyeonKim/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard b/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard b/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard new file mode 100644 index 0000000..dde2d7d --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/Base.lproj/Main.storyboard @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/Info.plist b/TaehyeonKim/MoneyConverter/MoneyConverter/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/Money.swift b/TaehyeonKim/MoneyConverter/MoneyConverter/Money.swift new file mode 100644 index 0000000..b370266 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/Money.swift @@ -0,0 +1,62 @@ +// +// Money.swift +// MoneyConverter +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import Foundation + +enum Currency:Int { + case USD = 0, KRW, JPY, EUR + + var ratio:Double { + get{ + switch self{ + case .USD: + return 1.0 + case .KRW: + return 1178.5 + case .JPY: + return 122.45 + case .EUR: + return 0.92 + } + } + } + + var symbol:String { + get{ + switch self{ + case .USD: + return "$" + case .KRW: + return "₩" + case .JPY: + return "¥" + case .EUR: + return "€" + } + } + } +} + +struct Money { + var usdollar = 0.0 + + init (_ _usdollar:Double) { + usdollar = _usdollar + } + + init (_ amount:Double, currency:Currency) { + usdollar = amount / currency.ratio + } + + func valueInCurrency(currency:Currency) -> String { + return "\(currency.symbol)" + "\(usdollar * currency.ratio)" + } +} + +let myMoney = Money(120) +let incomeInKRW = Money(350_000, currency:.KRW) diff --git a/TaehyeonKim/MoneyConverter/MoneyConverter/ViewController.swift b/TaehyeonKim/MoneyConverter/MoneyConverter/ViewController.swift new file mode 100644 index 0000000..40908a7 --- /dev/null +++ b/TaehyeonKim/MoneyConverter/MoneyConverter/ViewController.swift @@ -0,0 +1,51 @@ +// +// ViewController.swift +// MoneyConverter +// +// Created by Taehyeon Kim on 2017. 11. 3.. +// Copyright © 2017년 Taehyeon Kim. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + + @IBOutlet weak var currencySegment: UISegmentedControl! + @IBOutlet weak var sourceMoneyField: UITextField! + @IBOutlet weak var targetMoneyLabel: UILabel! + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view, typically from a nib. + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func convertMoney(_ sender: Any) { + guard let sourceCurrency = Currency(rawValue: currencySegment.selectedSegmentIndex) else { + print("Source Currency Error") + return + } + + guard let sourceAmount = Double(sourceMoneyField.text!) else { + targetMoneyLabel.text = "Error" + return + } + + let sourceMoney = Money(sourceAmount, currency:sourceCurrency) + + var targetMoneyString = "" + + for i in 0...3 { + targetMoneyString += sourceMoney.valueInCurrency(currency:Currency.init(rawValue:i)!) + targetMoneyString += "\n" + } + + targetMoneyLabel.text = targetMoneyString + } + +} + diff --git a/TaehyeonKim/README.text b/TaehyeonKim/README.text new file mode 100644 index 0000000..782f95a --- /dev/null +++ b/TaehyeonKim/README.text @@ -0,0 +1,12 @@ +README.txt + +2011-12186 +김태현 +Assignment : Programmers 동영상 수료 / 예제 제출 + +파일설명 +폴더명 TaehyeonKim +MeetingRoomsStatic, MeetingRoomsDynamic : 원본 SampleCodes에 있던 프로젝트를 수정한 것 +그 외 : 새로운 프로젝트 생성하여, 이름만 같게 하고 영상을 보며 직접 절차대로 진행한 것. +**MeetingRoomsStatic : 원본MeetingRooms 프로젝트 +**MeetingRooms : 원본MeetingRooms 프로젝트를 열어보니 간단한 스태틱페이지라, 그 이전까지 수료했던 과정과는 달라서 임의로 하나 추가. Dynamic이 아닌 버전. diff --git a/TaehyeonKim/SwiftFunctionType.playground/Contents.swift b/TaehyeonKim/SwiftFunctionType.playground/Contents.swift new file mode 100644 index 0000000..624c199 --- /dev/null +++ b/TaehyeonKim/SwiftFunctionType.playground/Contents.swift @@ -0,0 +1,182 @@ +//: Playground - noun: a place where people can play + + + +//: Session 5-1 Function Types + +func addVAT(source:Double) -> Double { + return source * 1.1 +} + +func couponDiscount(source:Double) -> Double { + return source * 0.9 +} + + +var additional:(Double) -> Double + +let transcation3219 = 120.7 +additional = addVAT + +let price3219 = additional(transcation3219) + +func finalPrice(source:Double, additional:(Double) -> Double) -> Double { + + let price = additional(source) + + return price +} + +let price3220 = finalPrice(source: 350.0, additional: couponDiscount) + + +//: Session 5-2 Closure + +let addVATClosure = { (source:Double) -> Double in + return source * 1.1 +} +let addVATClosure2 = { source in + return source * 1.1 +} +let addVATClosure3 = { source in + source * 1.1 +} +let addVATClosure4 = { $0 * 1.1 } + +let couponDiscountClosure = { (source:Double) -> Double in + return source * 0.9 +} +let couponDiscountClosure2 = { source in + return source * 0.9 +} +let couponDiscountClosure3 = { source in + source * 0.9 +} +let couponDiscountClosure4 = { $0 * 0.9 } + +let price3221 = addVATClosure4(157.6) + + +func makeAdder (x:Int) -> (Int) -> Int { + func adder(a:Int) -> Int { + return x+a + } + return adder +} + +func makeAdder2(x:Int) -> (Int) -> Int { + let adder:(Int) -> Int = { + return $0 + x + } + return adder +} + +func makeAdder3(x:Int) -> (Int) -> Int { + return { + return $0 + x; + } +} + +let add5 = makeAdder3(x:5) +let add10 = makeAdder3(x:10) + +print(add5(2)) +print(add10(2)) + +print(makeAdder3(x:5)(2)) + + +//: Session 5-6 map +let transactions = [560.0, 321.5, 190.0, 672.8, 1190.0, 450.0] + +func addVAT2(source:Double) -> Double { + return source * 1.1 +} + +var vatPrices:[Double] = [] +for transaction in transactions { + vatPrices += [addVAT2(source:transaction)] +} + +let vatMapPrices = transactions.map({ transaction -> Double in + return transaction * 1.1 +}) + +let vatMapPrices2 = transactions.map({ $0 * 1.1 }) + +print("hi") + +//: Session 5-7 filter +var bigTransactions:[Double] = [] +for price in vatPrices { + if price >= 500 { + bigTransactions += [price] + } +} + +let bigFilterTransactions = vatPrices.filter{ $0 >= 500 } +var meetingRooms:[String:Int] = ["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10, "Cezanne":20, "Matisse":30] + +let members = 9 +let available = meetingRooms.filter{ $0.1 > members} +print(available) + + +//: Session 5-8 sort + +func ascendantSort (sort1:Double, sort2:Double) -> Bool { + return sort1 > sort2 +} + +let sortedPrices = vatPrices.sorted(by:ascendantSort) +let sortedPrices2 = vatPrices.sorted(by:{ sort1, sort2 in + return sort1 > sort2 +}) +let sortedPrices3 = vatPrices.sorted(by:{ $0 > $1 }) +let sortedPrices4 = vatPrices.sorted(by: > ) + +let sortedMeetingRooms = meetingRooms.sorted(by: {$0.1 > $1.1}) +print("\(sortedMeetingRooms)") + +//: Session 5-9 reduce + + + +func priceSum (base:Double, adder:Double) -> Double { + return base + adder +} + +var sum:Double = 0.0 + +for price in vatPrices { + sum = priceSum(base: sum, adder: price) +} + +print("\(sum)") +var sum2:Double = 0.0 +let sumReduce = vatPrices.reduce(sum2, priceSum) +let sumReduce2 = vatPrices.reduce(0.0, { base, adder in + base + adder +}) +let sumReduce3 = vatPrices.reduce(0, +) + + +let pricesInString = vatPrices.reduce("", {$0 + "\($1)\n"}) + +print(pricesInString) + + +let descriptionString = meetingRooms.reduce("We have meeting rooms : \n", { $0 + "\($1.0) for \($1.1) person \n" + +}) + +print(descriptionString) + +//: Session 5-10 MeetingRooms 정렬 +let x = [10, 3, 20, 15, 4].sorted {$0 < $1}.filter { $0 > 5 }.map { $0 * 100 } + +let x2 = [10, 3, 20, 15, 4].sorted {$0 < $1} +x2 + + + diff --git a/TaehyeonKim/SwiftFunctionType.playground/contents.xcplayground b/TaehyeonKim/SwiftFunctionType.playground/contents.xcplayground new file mode 100644 index 0000000..5da2641 --- /dev/null +++ b/TaehyeonKim/SwiftFunctionType.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/TaehyeonKim/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/TaehyeonKim/SwiftFunctionType.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/TaehyeonKim/session2.playground/Contents.swift b/TaehyeonKim/session2.playground/Contents.swift new file mode 100644 index 0000000..1a47bac --- /dev/null +++ b/TaehyeonKim/session2.playground/Contents.swift @@ -0,0 +1,632 @@ +//: Playground - noun: a place where people can play + + +import UIKit + +//: Session 2-2 + +let maxSpeed:Int = 200 +//maxSpeed += 10 + +var currentSpeed:Int = 110 +currentSpeed += 10 +//currentSpeed += 20.5 + +//: Session 2-3 + +let name:String = "Seongkwan" +var greeting = "Hello" +greeting += " " + name + +let characters = name.characters +let count = characters.count + +let url = "www.codershigh.com" +let hasProtocol:Bool = url.hasPrefix("http://") + +print("\(name)") +print("\(name) has \(count) characters") + +//currentSpeed += Int(20.5) + +let intMax = Int.max +let UintMax = UInt.max +let intMin = Int.min +let UintMin = UInt.min + +let pi = 3.14 +let divider = 2 +//let halfPi = 3.14/divider +let halfPi = 3.14/Double(divider) + + +//: Session 2-4 튜플 + +let time1 = (9,0,48) +time1.0 +let time2:(h:Int, m:Int, s:Int) = (11,51,5) +time2.h + +let duration = (time1, time2) +let (start, end) = duration +let endHour = end.h + +typealias Time = (h:Int, m:Int, s:Int) +typealias Duration = (start:Time, end:Time) + +let today:Duration = ((9,10,23), (17,8,21)) +print("We studied \(today.end.h - today.start.h) hours today") + + +//: Session 2-5 컬렉션 +//:: Dictionary + +var meetingRooms:Array = ["Banksy", "Rivera", "Kahlo", "Picasso", "Cezanne", "Matisse"] +var groups:[Int] = [10, 8, 14, 9] + +meetingRooms += ["Renoir"] + + +var speedHistory:[Int] = [] +speedHistory += [currentSpeed] +let gpsSpeed0901 = 114.1 +speedHistory.append(Int(gpsSpeed0901)) + +speedHistory[0] +speedHistory.last + + + +let historyBackup = speedHistory +speedHistory += [150] +historyBackup + +//: Session 2-6 컬렉션2 Dictionary +var roomCapacity:[String:Int] = ["Banksy":4, "Rivera":8, "Kahlo":8, "Picasso":10, "Cezanne":20, "Matisse":30] + +//roomCapacity += ["Renoir":40] +roomCapacity["Renoir"] = 40 +roomCapacity["Kahlo"] + +//let roomNames = roomCapacity.keys +//let capacities = roomCapacity.values + + +let roomNames = [String](roomCapacity.keys) +let capacities = [Int](roomCapacity.values) + +let total = capacities.reduce(0, +) + +//: Session 2-6 컬렉션2 Set +let subway2 :Set = ["시청", "을지로입구", "을지로3가", "을지로4가","동대문역사문화공원", "신당", "상왕십리", "왕십리", "한양대", "뚝섬", "성수", "건대입구", "구의", "강변", "잠실나루", "잠실", "신천", "종합운동장", "삼성", "선릉", "역삼", "강남", "교대", "서초", "방배", "사당", "낙성대", "서울대입구", "봉천", "신림", "신대방", "구로디지털단지", "대림", "신도림", "문래", "영등포구청", "당산", "합정", "홍대입구", "신촌", "이대", "아현", "충정로"] +subway2.count + +let subway3 :Set = ["지축", "구파발", "연신내", "불광", "녹번", "홍제", "무악재", "독립문", "경복궁", "안국", "종로3가", "을지로3가", "충무로", "동대입구", "약수", "금호", "옥수", "압구정", "신사", "잠원", "고속터미널", "교대", "남부터미널", "양재", "매봉", "도곡", "대치", "학여울", "대청", "일원", "수서", "가락시장", "경찰병원", "오금"] +subway3.count + +let transfer = subway2.intersection(subway3) +transfer.count +let notTransfer = subway2.subtracting(subway3) +notTransfer.count + +let union = subway2.union(subway3) +union.count +let exOR = subway2.symmetricDifference(subway3) +exOR.count + +if transfer.count > 0 { + print("환승역은 \(transfer) 입니다.") +} else { + print("환승역은 없습니다.") +} + +for station in subway2 { + print("이번 역은 \(station)입니다.") +} + +for i in 0...3 { + print("\(i+1) 번째 회의실은 \(roomNames[i])입니다.") +} + +for (roomName, capacity) in roomCapacity { + "\(roomName)의 정원은 \(capacity)명입니다." +} + + +for (roomName, capacity) in roomCapacity { + let roomDescription:String + switch capacity { + case 4: + roomDescription = "\(roomName)은 스터디 룸이며 정원은 \(capacity)명입니다." + case 5...10: + roomDescription = "\(roomName)은 팀 세미나 룸이며 정원은 \(capacity)명입니다." + case 11...30: + roomDescription = "\(roomName)은 그룹 세미나 룸이며 정원은 \(capacity)명입니다." + case let caseCapacity where caseCapacity > 30: + roomDescription = "\(roomName)의 정원은 \(capacity)명이며 별도의 사용신청이 필요합니다." + default: + roomDescription = "\(roomName)의 정보를 다시 확인해 주세요" + } + print("\(roomDescription)") +} + + +//: Session 2-8 옵셔널 + +var title : String = "Storyboard Prototyping" +var ratings : [Double]? = nil +var supportURL : String? = nil + +//print ("\(title) has \(ratings!.count) ratings. \r\nsupport web page : \(supportURL)") + +//: Session 2-9 옵셔널 +supportURL = "www.codershigh.com" + +var bookDescription:String = "\(title)" +if ratings != nil { + bookDescription += "has \(ratings!.count) ratings" +} +if supportURL != nil { + bookDescription += "\r\nsupport web page: \(supportURL!)" +} + +print("\(bookDescription)") + +//: Session 2-10 옵셔널 +if let theRatings = ratings { + bookDescription += "has \(theRatings.count) ratings" +} +if let theURL = supportURL { + bookDescription += "\r\nsupport web page: \(theURL)" +} + +var supportingURL : String! = nil +supportingURL = "www.codershigh.com" +bookDescription += "\r\nsupport web page: \(supportingURL)" + + + +//: Session 2-11 Functions + +func ratingRecord (history:[Double]) -> (average:Double, min:Double, max:Double)? { + + if history.count == 0 { return nil } + + var sum = 0.0, min = history[0], max = history[0] + + for value in history { + if min > value { min = value } + if max < value { max = value } + sum += value + } + + let average = sum / Double(history.count) + return (average, min, max) +} + +ratings = [3.5, 2.0, 4.5, 5.0] +bookDescription = "\(title)" + +if let theRatings = ratings , let record = ratingRecord(history: theRatings) { + bookDescription += " has \(theRatings.count) ratings, \r\n average is \(record.average), from \(record.min) to \(record.max)" +} else { + bookDescription += " has no ratings yet" +} + + +bookDescription + +/* + 1. record의 Type을 명시하시오 + 2. ratings = [] 일때 문제 해결 방식 고민 + */ +//: Session 2-12 Structure + +_={ + + struct Task { + var title:String//? + var time:Int? + } + + var callTask = Task(title: "Call to Randy", time: 10*60) + //var reportTask = Task() + var reportTask = Task(title:"Report to Boss", time: nil) + + var todayTask:[Task] = [] + todayTask += [callTask, reportTask] + todayTask[1].time = 15*60 + + callTask.title = "Call to Toby" + print("today task = \(todayTask) \r\n callTask = \(callTask)") + +} + +//: Session 2-13 Class +_={ + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + } + + struct Task { + var title:String + var time:Int? + + var owner:Employee + var participant:Employee? + } + + let me:Employee = Employee() + me.name = "Alex" + me.phoneNumber = "010-1234-5678" + + let toby:Employee = Employee() + toby.name = "Toby" + toby.phoneNumber = "011-5678-1234" + + var callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby) + var reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil) + callTask.participant?.phoneNumber = "010-5678-1234" + + var todayTask:[Task] = [] + todayTask += [callTask, reportTask] + todayTask[1].time = 15*60 +} + + +//: Session 2-14 Enumerations +_={ + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + } + + struct Task { + var title:String + var time:Int? + + var owner:Employee + var participant:Employee? + + var type:TaskType + + enum TaskType { + case Call + case Report + case Meet + case Support + + var typeTitle:String { + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Report: + titleString = "Report" + case .Meet: + titleString = "Meet" + case .Support: + titleString = "Support" + } + return titleString + } + } + } + } + + let me:Employee = Employee() + me.name = "Alex" + me.phoneNumber = "010-1234-5678" + + let toby:Employee = Employee() + toby.name = "Toby" + toby.phoneNumber = "011-5678-1234" + + var callTask = Task(title: "Call to Toby", time: 10*60, owner:me, participant:toby, type:.Call) + var reportTask = Task(title:"Report to Boss", time: nil, owner:me, participant:nil, type:Task.TaskType.Report) + + callTask.participant?.phoneNumber = "010-5678-1234" + + var todayTask:[Task] = [] + todayTask += [callTask, reportTask] + todayTask[1].time = 15*60 +} + + +//: Session 2-15 Initialize +_={ + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + + init (name:String){ + self.name = name + } + convenience init (name:String, phone:String) { + self.init(name:name) + self.phoneNumber = phone + } + } + + struct Task { + var title:String + var time:Int? + + var owner:Employee + var participant:Employee? + + var type:TaskType + + enum TaskType { + case Call + case Report + case Meet + case Support + + var typeTitle:String { + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Report: + titleString = "Report" + case .Meet: + titleString = "Meet" + case .Support: + titleString = "Support" + } + return titleString + } + } + } + + init (type:TaskType, owner:Employee) { + self.type = type + self.title = type.typeTitle + self.owner = owner + self.time = nil + self.participant = nil + } + } + + let me:Employee = Employee(name: "Alex", phone:"010-1234-5678") + + let toby:Employee = Employee(name: "Toby") + toby.phoneNumber = "011-5678-1234" + + var callTask = Task(type:.Call, owner:me) + callTask.time = 10*60 + var reportTask = Task(type:.Report, owner:me) + + callTask.participant?.phoneNumber = "010-5678-1234" + + var todayTask:[Task] = [] + todayTask += [callTask, reportTask] + todayTask[1].time = 15*60 +} + +//: Session 2-16 Method +_={ + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + + init (name:String){ + self.name = name + } + convenience init (name:String, phone:String) { + self.init(name:name) + self.phoneNumber = phone + } + + func report() { + if let myBoss = boss { + print("\(self.name) reported to \(myBoss.name)") + } else { + print("\(name) don't have boss") + } + } + + func callTaskToBoss() -> Task? { + if let myBoss = boss, let callTo = myBoss.phoneNumber { + var callTask = Task(type: .Call, owner: self) + return callTask + } + return nil + } + } + + struct Task { + var title:String + var time:Int? + + var owner:Employee + var participant:Employee? + + var type:TaskType + + enum TaskType { + case Call + case Report + case Meet + case Support + + var typeTitle:String { + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Report: + titleString = "Report" + case .Meet: + titleString = "Meet" + case .Support: + titleString = "Support" + } + return titleString + } + } + } + + init (type:TaskType, owner:Employee) { + self.type = type + self.title = type.typeTitle + self.owner = owner + self.time = nil + self.participant = nil + } + } + + var todayTask:[Task] = [] + + let me:Employee = Employee(name: "Alex", phone:"010-1234-5678") + + let toby:Employee = Employee(name: "Toby") + toby.phoneNumber = "011-5678-1234" + + me.boss = toby + me.report() + + var reportTask = Task(type:.Report, owner:me) + todayTask += [reportTask] + + if let callTask = me.callTaskToBoss() { + todayTask += [callTask] + } +} + +//: Session 2-17 Enum Associated Value +enum Barcode { + case UPCA(Int, Int, Int, Int) + case QRCode(String) +} + +var productBarcode = Barcode.UPCA(8, 85909, 51226, 3) +productBarcode = .QRCode("ABCDEFGHIJKLMNOP") + +_={ + + class Employee { + var name:String? + var phoneNumber:String? + var boss:Employee? + + init (name:String){ + self.name = name + } + convenience init (name:String, phone:String) { + self.init(name:name) + self.phoneNumber = phone + } + + func report() { + if let myBoss = boss { + print("\(self.name) reported to \(myBoss.name)") + } else { + print("\(name) don't have boss") + } + } + + func callTaskToBoss() -> Task? { + if let myBoss = boss, let callTo = myBoss.phoneNumber { + var callTask = Task(type: .Call(number:callTo), owner: self) + return callTask + } + return nil + } + } + + struct Task { + var title:String + var time:Int? + + var owner:Employee + //var participant:Employee? + + var type:TaskType + + enum TaskType { + case Call(number:String) + case Report(to:Employee, when:String) + case Meet(with:Employee, location:String) + case Support(who:Employee, duration:Int) + + var typeTitle:String { + get { + let titleString:String + switch self { + case .Call: + titleString = "Call" + case .Report: + titleString = "Report" + case .Meet: + titleString = "Meet" + case .Support: + titleString = "Support" + } + return titleString + } + } + } + + init (type:TaskType, owner:Employee) { + self.type = type + self.title = type.typeTitle + self.owner = owner + self.time = nil + //self.participant = nil + } + + func doBasicTask() ->String { + let taskDescription:String + switch type { + case .Call(let number) : + taskDescription = "\(owner.name) make a call to \(number)" + case .Report(let receiver, let time) : + taskDescription = "\(owner.name) report to \(receiver.name) at \(time)" + case .Meet(let participant, let location) : + taskDescription = "\(owner.name) meet \(participant.name) at \(location)" + case .Support(let taskOwner, let duration) : + taskDescription = "\(owner.name) support \(taskOwner.name) for \(duration) days" + default: + taskDescription = "Need more information for task." + } + return taskDescription + } + } + + var todayTask:[Task] = [] + + let me:Employee = Employee(name: "Alex", phone:"010-1234-5678") + + let toby:Employee = Employee(name: "Toby") + toby.phoneNumber = "011-5678-1234" + + me.boss = toby + me.report() + + var reportTask = Task(type:.Report(to:toby, when:"Afternoon"), owner:me) + todayTask += [reportTask] + + if let callTask = me.callTaskToBoss() { + todayTask += [callTask] + callTask.doBasicTask() + } + + reportTask.doBasicTask() +} + + + diff --git a/TaehyeonKim/session2.playground/contents.xcplayground b/TaehyeonKim/session2.playground/contents.xcplayground new file mode 100644 index 0000000..5da2641 --- /dev/null +++ b/TaehyeonKim/session2.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/TaehyeonKim/session2.playground/playground.xcworkspace/contents.xcworkspacedata b/TaehyeonKim/session2.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/TaehyeonKim/session2.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + +