From 455ea3dd09cd08404b0f3a80193d37a270264781 Mon Sep 17 00:00:00 2001 From: JUNGYUN-Daegu/JUNGYUN-Daegu/jungyun Date: Mon, 19 Apr 2021 16:24:40 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Create:=20=EC=BB=AC=EB=A0=89=EC=85=98=20?= =?UTF-8?q?=EB=B7=B0=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Side-dish/Side-dish.xcodeproj/project.pbxproj | 12 -------- .../xcschemes/xcschememanagement.plist | 14 +++++++++ .../Side-dish/Base.lproj/Main.storyboard | 24 --------------- Side-dish/Side-dish/Info.plist | 4 --- Side-dish/Side-dish/SceneDelegate.swift | 8 ++++- Side-dish/Side-dish/ViewController.swift | 29 ++++++++++++++++++- 6 files changed, 49 insertions(+), 42 deletions(-) create mode 100644 Side-dish/Side-dish.xcodeproj/xcuserdata/jojung-yun.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 Side-dish/Side-dish/Base.lproj/Main.storyboard diff --git a/Side-dish/Side-dish.xcodeproj/project.pbxproj b/Side-dish/Side-dish.xcodeproj/project.pbxproj index 0fff223a6..1c20c9c33 100644 --- a/Side-dish/Side-dish.xcodeproj/project.pbxproj +++ b/Side-dish/Side-dish.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BFCE4953262D4891006C0882 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4952262D4891006C0882 /* AppDelegate.swift */; }; BFCE4955262D4891006C0882 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4954262D4891006C0882 /* SceneDelegate.swift */; }; BFCE4957262D4891006C0882 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4956262D4891006C0882 /* ViewController.swift */; }; - BFCE495A262D4891006C0882 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFCE4958262D4891006C0882 /* Main.storyboard */; }; BFCE495C262D4895006C0882 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFCE495B262D4895006C0882 /* Assets.xcassets */; }; BFCE495F262D4895006C0882 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ @@ -20,7 +19,6 @@ BFCE4952262D4891006C0882 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BFCE4954262D4891006C0882 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; BFCE4956262D4891006C0882 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - BFCE4959262D4891006C0882 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; BFCE495B262D4895006C0882 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; BFCE495E262D4895006C0882 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; BFCE4960262D4895006C0882 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -59,7 +57,6 @@ BFCE4952262D4891006C0882 /* AppDelegate.swift */, BFCE4954262D4891006C0882 /* SceneDelegate.swift */, BFCE4956262D4891006C0882 /* ViewController.swift */, - BFCE4958262D4891006C0882 /* Main.storyboard */, BFCE495B262D4895006C0882 /* Assets.xcassets */, BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */, BFCE4960262D4895006C0882 /* Info.plist */, @@ -126,7 +123,6 @@ files = ( BFCE495F262D4895006C0882 /* LaunchScreen.storyboard in Resources */, BFCE495C262D4895006C0882 /* Assets.xcassets in Resources */, - BFCE495A262D4891006C0882 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -146,14 +142,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - BFCE4958262D4891006C0882 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - BFCE4959262D4891006C0882 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( diff --git a/Side-dish/Side-dish.xcodeproj/xcuserdata/jojung-yun.xcuserdatad/xcschemes/xcschememanagement.plist b/Side-dish/Side-dish.xcodeproj/xcuserdata/jojung-yun.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..c21154a8c --- /dev/null +++ b/Side-dish/Side-dish.xcodeproj/xcuserdata/jojung-yun.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Side-dish.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Side-dish/Side-dish/Base.lproj/Main.storyboard b/Side-dish/Side-dish/Base.lproj/Main.storyboard deleted file mode 100644 index 25a763858..000000000 --- a/Side-dish/Side-dish/Base.lproj/Main.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Side-dish/Side-dish/Info.plist b/Side-dish/Side-dish/Info.plist index 2b43ebcf4..0c425fd48 100644 --- a/Side-dish/Side-dish/Info.plist +++ b/Side-dish/Side-dish/Info.plist @@ -33,8 +33,6 @@ Default Configuration UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate - UISceneStoryboardFile - Main @@ -43,8 +41,6 @@ UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main UIRequiredDeviceCapabilities armv7 diff --git a/Side-dish/Side-dish/SceneDelegate.swift b/Side-dish/Side-dish/SceneDelegate.swift index 9c6059427..0509962ca 100644 --- a/Side-dish/Side-dish/SceneDelegate.swift +++ b/Side-dish/Side-dish/SceneDelegate.swift @@ -12,7 +12,13 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - guard let _ = (scene as? UIWindowScene) else { return } + guard let screen = (scene as? UIWindowScene) else { return } + let viewController = ViewController() + window = UIWindow(frame: screen.coordinateSpace.bounds) + window?.windowScene = screen + window?.rootViewController = UINavigationController(rootViewController: viewController) + window?.makeKeyAndVisible() } } + diff --git a/Side-dish/Side-dish/ViewController.swift b/Side-dish/Side-dish/ViewController.swift index cb97196df..04fc2a6f8 100644 --- a/Side-dish/Side-dish/ViewController.swift +++ b/Side-dish/Side-dish/ViewController.swift @@ -8,9 +8,36 @@ import UIKit class ViewController: UIViewController { - + private var collectionView: UICollectionView! + override func viewDidLoad() { super.viewDidLoad() + self.view.backgroundColor = .white + self.navigationController?.navigationBar.isHidden = true + configureCollectionView() + } + + func makeCollectionView(){ + let layout = UICollectionViewFlowLayout() + layout.scrollDirection = .vertical + layout.minimumLineSpacing = 50 + layout.minimumInteritemSpacing = 0 + layout.itemSize = CGSize(width: view.frame.width / 2, height: view.frame.width / 2) + collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .systemBackground + collectionView.translatesAutoresizingMaskIntoConstraints = false + } + + func configureCollectionView() { + makeCollectionView() + self.view.addSubview(collectionView) + let safeArea = self.view.safeAreaLayoutGuide + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: safeArea.topAnchor), + collectionView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor), + collectionView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor) + ]) } } From 6adfe30ab1201f24e9e4e09cf12adae1a9f6a106 Mon Sep 17 00:00:00 2001 From: JUNGYUN-Daegu/JUNGYUN-Daegu/jungyun Date: Mon, 19 Apr 2021 17:09:42 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Create:=20FoodCardCell=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?-not=20completed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Side-dish/Side-dish.xcodeproj/project.pbxproj | 16 ++++ Side-dish/Side-dish/View/FoodCardCell.swift | 14 +++ Side-dish/Side-dish/View/FoodCardCell.xib | 89 +++++++++++++++++++ Side-dish/Side-dish/ViewController.swift | 29 +++++- 4 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 Side-dish/Side-dish/View/FoodCardCell.swift create mode 100644 Side-dish/Side-dish/View/FoodCardCell.xib diff --git a/Side-dish/Side-dish.xcodeproj/project.pbxproj b/Side-dish/Side-dish.xcodeproj/project.pbxproj index 1c20c9c33..363bfbe24 100644 --- a/Side-dish/Side-dish.xcodeproj/project.pbxproj +++ b/Side-dish/Side-dish.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 8844B7BF262D6C3000FA49E9 /* FoodCardCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8844B7BE262D6C3000FA49E9 /* FoodCardCell.swift */; }; + 8844B7C4262D6ED500FA49E9 /* FoodCardCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8844B7C3262D6ED500FA49E9 /* FoodCardCell.xib */; }; BFCE4953262D4891006C0882 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4952262D4891006C0882 /* AppDelegate.swift */; }; BFCE4955262D4891006C0882 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4954262D4891006C0882 /* SceneDelegate.swift */; }; BFCE4957262D4891006C0882 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4956262D4891006C0882 /* ViewController.swift */; }; @@ -15,6 +17,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 8844B7BE262D6C3000FA49E9 /* FoodCardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoodCardCell.swift; sourceTree = ""; }; + 8844B7C3262D6ED500FA49E9 /* FoodCardCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FoodCardCell.xib; sourceTree = ""; }; BFCE494F262D4891006C0882 /* Side-dish.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Side-dish.app"; sourceTree = BUILT_PRODUCTS_DIR; }; BFCE4952262D4891006C0882 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BFCE4954262D4891006C0882 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -35,6 +39,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 8844B7C1262D6CEC00FA49E9 /* View */ = { + isa = PBXGroup; + children = ( + 8844B7BE262D6C3000FA49E9 /* FoodCardCell.swift */, + 8844B7C3262D6ED500FA49E9 /* FoodCardCell.xib */, + ); + path = View; + sourceTree = ""; + }; BFCE4946262D4891006C0882 = { isa = PBXGroup; children = ( @@ -56,6 +69,7 @@ children = ( BFCE4952262D4891006C0882 /* AppDelegate.swift */, BFCE4954262D4891006C0882 /* SceneDelegate.swift */, + 8844B7C1262D6CEC00FA49E9 /* View */, BFCE4956262D4891006C0882 /* ViewController.swift */, BFCE495B262D4895006C0882 /* Assets.xcassets */, BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */, @@ -121,6 +135,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8844B7C4262D6ED500FA49E9 /* FoodCardCell.xib in Resources */, BFCE495F262D4895006C0882 /* LaunchScreen.storyboard in Resources */, BFCE495C262D4895006C0882 /* Assets.xcassets in Resources */, ); @@ -136,6 +151,7 @@ BFCE4957262D4891006C0882 /* ViewController.swift in Sources */, BFCE4953262D4891006C0882 /* AppDelegate.swift in Sources */, BFCE4955262D4891006C0882 /* SceneDelegate.swift in Sources */, + 8844B7BF262D6C3000FA49E9 /* FoodCardCell.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Side-dish/Side-dish/View/FoodCardCell.swift b/Side-dish/Side-dish/View/FoodCardCell.swift new file mode 100644 index 000000000..f5ea73342 --- /dev/null +++ b/Side-dish/Side-dish/View/FoodCardCell.swift @@ -0,0 +1,14 @@ +// +// FoodCardCell.swift +// Side-dish +// +// Created by 조중윤 on 2021/04/19. +// + +import UIKit + +class FoodCardCell: UICollectionViewCell { + static var identifier: String { + return String(describing: self) + } +} diff --git a/Side-dish/Side-dish/View/FoodCardCell.xib b/Side-dish/Side-dish/View/FoodCardCell.xib new file mode 100644 index 000000000..9be8cc414 --- /dev/null +++ b/Side-dish/Side-dish/View/FoodCardCell.xib @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Side-dish/Side-dish/ViewController.swift b/Side-dish/Side-dish/ViewController.swift index 04fc2a6f8..f49f82432 100644 --- a/Side-dish/Side-dish/ViewController.swift +++ b/Side-dish/Side-dish/ViewController.swift @@ -15,14 +15,18 @@ class ViewController: UIViewController { self.view.backgroundColor = .white self.navigationController?.navigationBar.isHidden = true configureCollectionView() + + self.collectionView.register(FoodCardCell.self, forCellWithReuseIdentifier: FoodCardCell.identifier) + self.collectionView.dataSource = self + self.collectionView.delegate = self } func makeCollectionView(){ let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical - layout.minimumLineSpacing = 50 + layout.minimumLineSpacing = 8 layout.minimumInteritemSpacing = 0 - layout.itemSize = CGSize(width: view.frame.width / 2, height: view.frame.width / 2) +// layout.itemSize = CGSize(width: view.frame.width / 2, height: view.frame.width / 2) collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) collectionView.backgroundColor = .systemBackground collectionView.translatesAutoresizingMaskIntoConstraints = false @@ -35,9 +39,26 @@ class ViewController: UIViewController { NSLayoutConstraint.activate([ collectionView.topAnchor.constraint(equalTo: safeArea.topAnchor), collectionView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor), - collectionView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor) + collectionView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 16), + collectionView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: -16) ]) } } +extension ViewController: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 3 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: FoodCardCell.identifier, for: indexPath) as! FoodCardCell + cell.backgroundColor = .green + return cell + } +} + +extension ViewController: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: collectionView.frame.width, height: 130) + } +} From 757cffdd2f0e14bbc620d5eff54fc2006e9b8ddf Mon Sep 17 00:00:00 2001 From: hoonha choi Date: Mon, 19 Apr 2021 18:36:53 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20FoodCardCell=20UI=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 18944 -> 36106 bytes Side-dish/Side-dish/View/FoodCardCell.swift | 4 + Side-dish/Side-dish/View/FoodCardCell.xib | 171 +++++++++++------- Side-dish/Side-dish/ViewController.swift | 3 +- 4 files changed, 108 insertions(+), 70 deletions(-) diff --git a/Side-dish/Side-dish.xcodeproj/project.xcworkspace/xcuserdata/hoonhachoi.xcuserdatad/UserInterfaceState.xcuserstate b/Side-dish/Side-dish.xcodeproj/project.xcworkspace/xcuserdata/hoonhachoi.xcuserdatad/UserInterfaceState.xcuserstate index 7ae600ce4366721ffab008d9caf7dca11edda16f..9c0db6b488cd92f8cde6004e8deb3aeb390c8fce 100644 GIT binary patch literal 36106 zcmeFacYIVu_dkB;)=eOrP4CI3_mE8w5J=fH(vwX>3WQCvAq#2jZh%nl1wkn)f+B*b z2^|p>R75}!M6jWPfD{o_1Vj-FHZ0#W_wJ?uj~|}r^Lc)+-ygy&$-Q%@&wI|CbLO0x z`i>U8(G(s15rGJjpa_~^2$tXo>(K#|bq1rpy{#%hYiMZJ!<#0+)ZQ^VpuK*AuEAuq zC(!(7>J+wxWqGH(l{ElSE3R$B;XfRSBJLH6%ksI0qbX=A>O#}dbTk9aL37aqXenBT9z~C# z<>+zLje5`;v=*&Ho6%OZ9qmAS(QD{U^e%c2eTYt=ljsaOi#|o4qc6}#^d*TlO59E*JFXXS}ZxlsYQPz}#a->`-Ps)q(rTnNMDwqnPLa7)ki5fwrQyEk?l}F`M z#Z(DZPE}CV)L3df)k>MDsniULr|zTXQ46T2sb{Ees)t%bt)!}UYMrsSSgL;vA ziP}x=q28blQEyU*skfW})CuY|b%y$qx=dZ6u2Nr7KT$tZzfiwYztIGZXqHyc zcC%&Y^SZQFI=iPgm15bS*uG9!odVEp#hAi8j!a z>G|~i^aJz)dLg|C{X{ROAEY0mAEuYk&(Pg;550z7ORuBX(;MiG^vm>4`W1Q?{VKhi z-a{Xt-=q)IC+L&(Df(mjG<}9XOP`}J&|lDB(bwp&=^yEv^iTB9^zRJ8u#6+)#5gl9 zj4R{D_%i`aAQQv{Ga*a_6UW3e2}~lB!Kj%`CX2~ta+q9Z6qCo4GZjoFGn%Po#xYuE z5@TSDjEU)FCNoo*sZ19$lbOZLVdgRqGs~DqnH9_v%xdN-riWR>>|$PJb~AgJz07OO zK4w4jI&*+|lX;Ih%6!C}U_N2aGoLb_F<&v)Sj3Vn#nLRpvMk5SSS!|=m9tK)GwZ^7 zvEFPD8_W)2quDGro6TW!*->mBo6i=og=`U9##XcASS_n(C$I+A$Sz z?8EF5_7Qd|yPRFkKE}Twk>^JOn z_DA+6`v?0c`xnP?GR~Xx;gp;&=g0YT0bC###07KVTnrb>#c@NqVO$2M<}$egu8?cw zbX*fRo@?gx+yrhS*TS`OlenqeEN(V;KlcE)gnNYBz-{Cpt+*WQI_dNF^ zx0~C;9pDaf?{M#O?{O!%liWG(6Yf0s6ZbRs3->Gc8+VKQo%@6Pllx0X$dHVbQ8HS_ z$XFRCvy<7&9Au6%Pg#&GSQa7+m4(T|Wf8IjS)wdSmMqJVsb!h6ELpLvM5d87%5<_O z*?3vAtVPx?>yS;7b;_p8X3OTt9+oXD4`}ObX*o{V5OTtnP!JA;b7f&!)I?pEu^RrG z>1;(nLyOjE>>=z3d!FQ}9>S4u;%NcJ@d0&;fXu9vF=-9}(7aK zBz$>>XL*j7@m9PwKWGEtPXrKwL=Z#?Ap-fqybWI|pcshb!dLR)V{!KSw#N1;Sq5#Z zu1+zce|Z{heMWnm$y}h?>@5f~BmtD+X3g;nr7bdwWa0){tu{wNByM_f4!(zfbPdr>l};6C#wc z2{R*<(_>;{;v$r)*w~nvGcA1_M~ooCHWBee0+C205y`|*Vi+-;Na5wYEwAA1czfP~ zcjTRT=S|SVsYDu)PGk^jA`{-Sp_5(tv3woh#E<9o@YceI*C`ZGp|a-oDTUg}`te$5 zt`yY!nr6^JqwOG8xk=xmH|cf8N`0fLS&Ek1X6%4vyxq_jtv96@t+qn1o1)g$ca9$q zqo!~u(6zQ3y0Q)0j^@5lOC5Sk7z4#+HtNm!T3MQ}A*zY6bwoK)K~xf>i7MWWcjrBL zPu^=CQA5-cV~DXt9q-LY@ag<$z6v)_Il7^}Q5OaI<>^gPy>*M~9lJV3bZ?Zh_D(~C z&Wy71+}ol9S~A)@p#60U&)y^ha}}Eey;Y`bfnL!y_Lc`6PPU=FvqSm-{E*Sortw4z z5w@0SCiKJvVj}OuD|uhuZ!OVEv=Qw@EAP(-@--MocGW5HpEc)e`AwgDE*$ zdej+f3(M4cm;~)@T0>V4#F{<2u&hXA=_HH~s83lt00$yk%9umkM>uyAbNS$IVjdrY zDG;6)cTIB)h}r^TA+e}V;SNKICu1>YHcNFK2AvV;j~3U05933N?9jP-3nPk1ie|ih z0;}{UU8~qq04z{IQ(8lV&S=y%!erKsH8x;!QrvC?T(`H4F`9=h7t$Elvx60muI|S; znbjaoht||w1*AzgHAmlO>an)2D$_UWA{+I_W(9G~Ms7RkZrSUmc4*r$_bXN)HtnGE zfun~GyZ~9+Ijpg^w%6dvp&*YrIlJ6@`nL&4?>4C0`k05O*S#m(UWCg(IC8tsh90F~ zkFT#kVgA?SAK;%lNqX^5T_!zr2SF*pgVsVVL+TXvS?%qO8CpYQhOVV0$~Z;eWC8}= z4v2jekpirDDa^-OV6*kWW_JRM{UGrqu+*D@o!$ZL^sB^s#5rJ|zaqXSzC$!}K%OWN zg#ddT2TXA)u)=w$7?n!}lgM1HQ1f5&A2dM%6K-V*;cC<*8xv10BqHojTo|J?K zj1V)p*APpHM~Ks?BtBY0j z#S=%p4Crdx_}oT7s=i4NG*D{BGU8F7hJ|GXohDr2zR9$PSca#QWvVQPo&=KjII)6w zf>=qc;v@Meeh44UtJV>#iKmFCiD!szK88=`hw{VtRFO#!hx&kOQKvjWML0k(3!)faj5&dW9fV|UnP3;DqL{uO#j&7;? zCgNE<%Qy3}-NY7ND z6ovH=uMoTVL_P^WyaEr2e0cHbbc437p&659$LZ6fBb3qN>X{f5p-hU7n>n-ClEp#d zP;Y(SfYkPu_a*TS5w@PVOk5$Z!fd%l ze9dR@YCehd>jx&sm@6o1Yw0TOY-@v|O>b#$m}tBM zM_&D6=0Xlowh3aJb5oF(Uibr%c%A!`_zMvT@p*hcU%(fxMHHfm5XACDd?~c147bI} zQsDtet5f(xct)qe0JY55cEXsKN$o7vH9@g$4bpO`f>=4)$vX2uv~*c=$tW(DSPoph zW_?Q|q!D|fPT_4S(E@v^S72g_6X+Obt&t6~?M8CGm@nxg{^Ddt_Q(MiMDtWG)0x&l zh$At(ys!*jY7?94>l>5mO*0s@U2Bj#@+4*h6ED6h z2Dy9f5h-2KQ81rcFukUt7QfqXSz!`H3>W~mZ|0;A-?kHOs@cz32o zpbAupMx!cJjcQOW8iU57Iy4Sx`BuJ-Z|6JsNxXqK@+Q8MpUh9;r*1(F#0{iF zO=vu7MtU>>-da#ARI3Zf<~)8re?Px~U&t?lx2FW;CDqkVA`rl110QL^?W|M8NK0IS zcB;M=h6vMFtwC>WZxbnHIY7(YEt0?@(NCrMrL)DP?*Q=;XIE^{w*nKKukC8@G*u6X zZ6P~SAeN=X6uFq;gvA+zEu~u5q=npyu{za=3H3k*7yw{vCgmc(+0_DI^6!v}v}7wP zU>gS}9BXMuSz?ehpLhL0;;tToP-q9O-bGHoVOf(wk86Q;JS^0mjk+pmmegYZ)JL`qASEl%lXsM~8cKSap9>}3 zhs74m&{!~oJH$U#uN3nDo>>~`x_n)eNz-1cAKz?J5XaGav;o$Vji4po1T8Nt>mB2K zUE6q3tnL>kuHXv9KOn6Y&!R0g{l4~~=ZM+;11w#%4LvV07S%-^y0+Xl&`%gopcm0g zQ1Z)YCwc|#La(CTXb%W27Bxow4vlmwGTSa0XpQ zSI|}T6}ko;@HP4dT}R)d8|XXqJpjoI{eXT%H{s`}nntr$uDmoK_+cYR-4Zv}(%ITp z*x6c-l`!_YwnlNy?H_2@(5y9RL1|$q)wYe-0UEJHYX(JT8;IVJ1cIcr`5M z!^sH3mW(8$$RT7jsX{l&STc@`Clkm-ph*_w59mNF-2wxMk%hIlSX_@Xiem1-0RT!4 z*fsT&!-4N<6IG&SA>j7-b_2fRat6*l4@-Ue_{?4%0KbKQi6{6?{44xUeh2?@KiW(t zlS46WCT{T0^P5FdS}yg_NOWionM$US>HM?&bNtp`f=EWAJwR)=K&Jyuawu!iwdvHL z$pURIG#2Y>ER^O>;zJgS#An+;;&U8b1~T&vSw?EmP5uRbI}b8Q^M7S}-lewU1R_V1 zRd=6XJ!CbWD|efE$H`g%$QS@d9a)AqLF%s#~Z8!|c8^JuEXmsu=p%*lDzgI9Tzj7(i;K>g%P# znn}I1eKKHz;VIEWPQaz(t(7~z-2r=aOoV+qzQFc3(cV;EfSo4KkY~wr{Biyx{se!r zuV>>$YPAznD@zC78^ErKeR}HdeJTO$wA7~){%d_YkduJv-M>>MG@q_hgf+CcMrk`h z@B;3S= zk^B`HwDT}%U-6gutNjLzqA3QwN^!8fT;ealpnb}h_bDB2<36G+giQo~d2XMsrb}Yt z#f6C)1e1swOxaL!{v!Vw|9S6F6DP$H8;M8EJk-Q4F(|2D5alKYeSw4e)V|URM0tx- znCcv9|A>jvFDRZ)kihrvmr zgG|6@q|}Rg>3#sAyv14fC5Re*0BHmzk~&iqha^21?C1^aU33Oi4|XJPTYv_Ph_oF) zb|9^~11wY+rkhkGfMp034RrHck#2qsVEKu^Ie>0bu~eLShX25S({F}T$#}?zQp2d> z{B`~Y|6T8pQ(@v@ev1baSpT$+j(g=qs2nln_c&#r7-Z%|r~(lOKT0@g`mapyJL}rV zO;82m$o=>)mI7%WR02Crjply=%`R0#*iyCB7|_c%NDAva)^`3^0eRdpI(UJnv{b!F zf6WWLfJpu~kpK@|;i+ayFAa|X3iVt4$EOV_Fx5_VP?IPF|2zK&|0n-f?->2ZOFSju zArcUA*D)Hf#!J>H)I#b}uvefKQH!YusfVbCsU_4S)KY4hfG7dc0%8Qj3WyVsOh8rw zvKG*wP1Ivpdq@OQPf#miw2>pl<^;90;qvcm13J^d+Mm%oMfbft&NWYnY0X z$N$b;#C>N`=!$A@YBK6zL+;L;q}^#L7T)9hS4~RmG&Q#yprAWjjLBtIdkdD`C6I1H zhq|fF0Uc@n)!S-Iy1mqX!nucfjoK$52LU{7+fcPwbbM+bpb?f>Kye6b)NcEK;8oK z5s*?qzH6zA)MvzX>I(t+2`HG)6;L$nY+`*NrqNPSy?W1Hoocnzl~|8lC29?EWJ_t+ zs2jMnuc>dS>(sXb@)uBmfC2>+v=-*f4e9_W?JN0m+`W?Sz5;aBc!L=odzP(gC zMcRUe0UY?%Z2eFM>ndPPIpCw1yxm|@>j0Jd4p0vO-kb+S5p%~9wxzPSs6Rl}OZ_gO zkZ$Tv0rr~ywX&B6WkwH8(LfZ!1Qgk;(x5qd(CtcCdN2`415(2=9f;rqdb`v=Rantq zgG)QmE_Wn$B|>O-0Y&jH0vf^x^z||5e+Q=ap?#tLG>oOH8yKc?vHHMO8{1pVJKlJZ zj?qDcEgejUV1cs{lnh07bm>4l6qXD6PYt0zRoKd`tOpGS6BC74Rj&rZa#wAXfI^?FxvNYXnxM0tDdPTs7G4 z})C6pTBbD0S?8w#|>i6E3)%Iw|6 z$yH0mW*a)hah_6og&ujBN`0;E>R; z@QBE$#FP;uGxPEbipwOUM&3emu|Ob9_uk5y4gbI#GC4_=oEV)R8K0gO6B(C~l^&Uv7ORfT%1q3P%Z!VUR>x#W z^Vgya=o7Y%4~bUA#3f)fOuVZNW_K(v>y8KON5%1^WYy4N!+}eHUTgr6vL+Y4Nqw zaZi9DVO(7F%wwr(=^1yk=Yj$0UxA)R_Q9_^p3l zqAe#_dV+}}P@I2l;|K-7M;JVd1&6uXs`#0>-i1ZIppnY&DO5vnN$EgSv=a5$=&7*d z-VmD**U+d+ju!2d+`;ZNl!yVN$y~6qn+h%fkAmgQ2Cz@sNxThW%2nbf81XxU*?tt5 z>c^ls6b}abNw66_45fh4ema7EQIrGQoa10eaWRqQTtqiGc# zL&wr_bUd9vCkiNDKnVhZha>?d3uvf-h6!l6fKtF_lpabCqleQe^ay$+ol2)+A~`}J zO9WCQkWB(PUm))n$OQtq5EDbkblCEm*wGFqaYoT37Br5HB3~eG6G{uE$iEmtl>@3a zW36O4TL$(zSTXA;y@G`atShilA?`qdNQ^BS@kVQl4l?Z9@|2RLgHo?iOsF??fm#+; zC0L#<6H$UCEKcsy6Skp%{S0iWEH1IRZB6YE-J*r=jqVC&Q4mL}vn4ZJWlM(^&}CqW zMHkXVFa0>T~1ffmGo!kIERYCy)c;1H>lM#M zp)j`C(2gBv$~rr6!*3S|2gIpU4DA&p|F!nAu)Qq{R8VDIu&dnK$Ep6is!vNd)zJ-L zXhM&pwRF9J)B?&9P|g~(G#(7C7{eYMbZDUgx|lE4ylyv zI>q|`<5KQPkI<-_{J+;6SUPzMJqrxQ=&5uUJ&m4D&!A@tXq15R1e7nJ0s$2YsAxSs zo48I3^c;FFeV>4eG5=X2Ai!;zfHWAD*iyDShgiIz{L`q|>xd1iPO)MeyIo#pb~*Jc5itI@B?JVGb?h7Zg(iqy? zO+4B-Xt0ZiZ$NOE#QvP2)oQ(pqk|2(&YZv`%WD zd0)<3*M{YU#`I2;Nu&tS^uDe&@|=PIzY&^ekGa~ox%cxdd4{Ksd3t&K+>NaOCP=hl z>+x3h@)MBW&;J>ofkc5px0}8NdMn|3i1~YX1eoU4fxb0O-r%&TnFeiMijwJmeE4L>ZVm*Moh&3H%73Af5yNzz>LH;3IgF_?Y-a zG~EPEHE|0Jod+XZVVj{2+8*f|mqb7Xnb+D@6fK`2mG{1qFf;GMI z|M!#ozp*g?v&dq-47lU{v&jCh7Fo;8+e`1m>b}CRH0BlJ;B3EraLrr)98rQZ{fUO*EBG*Lh;0%~1HzfXTae@Gvrj|-?x zKTgrOad|r2=-_H%K-2PN4@nQ zm)_rIsq!~8X#IQW>ojQmCktpw5B(k9shJACDB%@S|5Qjl1Ny={TQ2F1exZM@Q+N&N zvD^E84gDK^3vYt_eYAgJd?oGq(SOi?4)AJX5JSPdBH!oFbTgpdpV8~@#BhuaAe@mg zR*W?>h#4#(kYi^FXtscO0SW6EIb%y5UCg9AfVM4;n=skA5Ouf8|IG) zaorRtT;%bw!*+U3SG_?G2JU7b7QC6!r?3S9zye0_P6i9veqs;k(WP&&qX^SxvK}zvr!Cd>AF;E1>xTx?eyKV0ZU) zb9Kuav{+^D-5Y@QU!a#!MMs133#+B7+uK_~Io}%rlvR50JoF!F-WT&9`GF)eh@fUd z0n`laqbz_;UujsFNG2L~%$O)%{++}z%#OQ=)n!5s|b|A8@KOW&M-zx<-|u_=C?!f#;QqP_}56@zBYpw(NB zHem9ZVmzP)Od(SwAdtIO2T0qYTs9Qii0$Q`4nZQhBT9{U*jeu>#wE|ivp!EXUD40xoKF2MWkF8E^_)~JA* zSJzhzz*-ttFhe$b()f@3MQRzCQcaIk#l}Y^^!t|x$09^W#rFTFii=I2DM5c4hCZlX zH}ET}%bS}byCz4frxsbdXg0%}JI^vf;(z z_4R+(Q?W5g3CW47yZ2N=V}mMAJD^hCQl+;4=as5&Y>H2=SN&b3;^JZwRLQV2c$eX; zZ%kA*#l%Kiz_^y#3Y#~~I%Ykyf!WAxVm33+GFun`Bi++1NUY#!<=MJT+R0do{+#(zG>>5}iRLkfdziD#8AuPg+>wPP&DYFN z7<1n+*O_mb8_aji_skE>kIYR0y(OTx1#I~Bu7E%aIVzy{1q99da1-;h8FRPHnEOjW z$1IpT*^9X||6mT*)2M$Fb1WFvcC)|~A2(x;wFS(v3f2z)2Nth3c_3L= z)*W!if?3q5Zq`FUAKx49SRd98gJvHKOsb=RPTvD)*bp{c1R4v>CKPz~Uec)8VE{BX zhK*(8*myR9O=OeUWOk^4J`vD)0evc<3j(?*Adt#F7tj|1y0nQME&+{Am4L>o1@xr_ zXjgiH_VqtN`%i#YjDZGv#LE_-Y5oOqvp}qd9fKhT`wCaP*|7rp>K-9h&*~(IHHr|s zb}w+5$hJukYZW2(&Ap^Cv9mD5I@!tW6m}}x#ZF_VvolzbF25BJkn8UR^u2(75YUeT z0s{AwfPUV@&Nf4At{Gw=rTt=o*sWfO{q+yT{u78T!w`E^K)+fb_Bf_xD~KETM?k;f z^%H&pC8I4Mdz$UWAOqRu_ih$smp|?iWb4^Y639TN0Xp{Qy#Qt#yIlg=3m9Z1aW83J zVfSKZ%LKBAG*Hpt$M-(CVBK8HzQ*oj_p`4HB%Gb;ERf*>*>|K2`vwb2y-n;P_D%LM zdxU+9eVcuUeV2VtASr>Q1(Fd+Rv@h?E;U<)$8WxvD7gs+Nj_IrV}yGLaH z#QrKF^B0Uv(jHL80%bWQkPdgSWp?Dd=HfVlqeO6WqzF!@ze{FGW5qcD&Nyps5I2~! z;pChxr{L^3dx3NjNLPUbkh=?{hd_D?q?bT?3#88`&QZb{=PKchgKtVR1tbG{aVDDa z{v$#Bo7@~10yyJB1=80{0l5gk85hY#;U9tY6G(sQHy|xR;b0lacrFpJ#w7@3U^kZ} zfM@hQS>AKQxsf8)xDg`Of&nxfDB}QYaNgc+w()jWy;#fQawV+gh*%5zyJVIs7I9S= zYsFj%SIU)f8m^qH;3~P%0vREYkpc;=8zPX=0;v+n7=erx$hb{hwHa$;%~-1!$ao9Z z5__>W>>rx;AJ8-o{C~Q+c7aT=V9fwnyStZ%We~f#=@@6z1Tv|cn<0?N_lPr|n+t&9 z1dvuqVBxWc2bNZy?k25T%38oJmO!>h1le!^8TQ@)@f5r_Zo{S}%~B2y!rR0x;~wQ6 z1kph`2kZA&$E|3`lsTRmgfy~;(tu}+K+YGXG0-0?A*{EKS z75xLU{{&<&V32JW$Q%pEUcv`He>C16hk934#X!9m}F_il{()=sE=yFnEf6$6IZw}sv)a4fVc9?r2=XQf3ZXJo}h!r9iKrH+YBNJ@{dn3|MOmk?JW?HyH1e^jv% zF=hzJWU|4q-6OM-S<40q7D)XXnT<>?vlYk*a3a1yc4C?l4Zs*^h;BAo$478= zw&K&iB+QiQ#$y9?=z4sx;=m+k$6>syc>5>Ol}FU?$()euI+?S~Mdm7VlL6;8Q6LQh zIawfqV9)IJmXdkNz-4KT%v@*ro+BQnGQ}wla7wYc0PZTtyG3+TIruEllFKT2xTBiDDRk7vPhZg zZf%K?#o}Qw3ZzLK2LDtkAEHEAE}qP18OEWq5qC>JQkE)%m12rOP8G;5KHNW5A!SfH z^e&aimgU_g6UIkYAS=Xsx#V<#gdJ^jBSc>?St%V-War%QUoZgPrtldw*ufEezrw_D=KToHn(?}rkGEImn?(9=GNTf(z(sxD${p7Az1Tz^Hfz?Cme{Z zYt%I!cXF1yxO?5jZ>h)Cji-60$HNm&YIoxu!P6uQ4#R+$8SQWi?+NUOCJzh(FD>|j z9h9KlrmPn2c=4F%UWY;Wh^eT5YLL|5b`L1vWO$Bu1?We?R;|Scp*$Doo(?{o$K>Gj z1-lhed3~;j{TkuITj7dF$9b($#l-S($~-@KO?*P4=y2rBJBmJOI6qvk-gMyI2$k31 z@GLmC6{s2<)QJzuGWLt&YKc;wTW$n*;NDNioaHGayGMYJniDQNP3_f_o`H{F@5#)P zPGE<_gCKWH&iG&xILV~<_#fB{?fr@kwfnv(2nBnrps=X;ZpPFD9i56w`Yfsoz_agm zOX{-n5{qFN&`_zZxKG8VKpCT}BxgV9g1(OJsV=!oD8#NEV;=OL+L9A>CPXU7A)kx~f{q zodX+f7s3_}qPEpG7(3F6i}NwO+Mq5H%=-WS=_G;h`|(JeSN|{f@XRy-L%9DGQwM&Y0nd&THKiHwyaeJ5Hm8MP!Y3OJXfo&x42UDn<$RCD^bGNBO_~*V@vF>y7{Uz|Uag#Iij28wK^huTiVU&qLvPdxJK! z44#wV`RmF0ib8l!B?vO0!<1eM&!gbEv2$X18azk9^VTLq7Cy9l1U#QcAthmi1JfsqPvZ$Kcob+MEC%w4A+jM>8~hj`hLM;E;p5@?Qtx;Cj#Jn)Jd60Q{QK9W-6T-xCWzu}y(h&eZyON@dNGrZTq(d|mOh~R7Z-V9F##04>A zD%7wQ-ZLPy6TXdy=l-R{0Fq+h)+Jn9sSfx%F6FAZly*qbD3&Fq!|iN@7&uQo#G3}+ zaNWeV(=On$7z;nc;NG1SIvT>WAs;Q#MMR3>!^JR5seLWSZM)iA>LjQuE&=x&ZaseL z>lvw+Ux)rOL1+uK5Z|_dV;P|~zeAdd=G6VuKs%SXcZPIyEPtpZckFtoFNDl7)ae`E zfB44X8GBp_<;lhS-y)P-6uXW$w6?XPI;G|8#GC`o=)&8w)0+dNm+QjEPa020haP{icKQ z*NG#g6Z=RSk4|_tK`%GKw>CgwG4z@Rg|{OF=hpu_Mub%Qc*s|J>qC5l7=jUk%g1QB zvw!}b8PaclG_@^p@8}r2e#R|bhcrHT>~!}R{!~cJiHLqa`s?Vm(OaT_h(6!jU&`oH z(ceU$i0+0j*QjOGOVnO!7xgOjE}?|CSK&m9UEif?#WCJr+u#;dZQ1@SKce!Tn<@ zxNR(&E+Uk48n|kwnx8Qx91j069h9h6r0AMG0&Xcw!ZfmfYoR86)bj2v?LP~F*D%4s zr?5s5aI;O90UJgtMNV9q+tv^jp^Sl}3aL{)f+@LoD?#x>R4*DxmH`;_=fRm12M{mL1c&E`tI6(J%^czXRaj1@P z3tkW$Bbr2}k$I#B9QMb;QQ3h%j9B{N8Zll`@RNye&H+KOJX89Fvm2;q#aF5(DxIeC(Zh*VuX3>l3 zmEtXMZ_vl-i}VfpPsRqUgTujYHWzMb8xOa#&1aT_wbx6`A)wlqn4jQIHD|y@BH*P8 z?ns*sccZOlx3T-#582Pzn{daO8{B7>!WD5^&cw|JRp=IOA9oBiPrt|pf$$##cZXHW z+Tez;<+9DP*JQ_Jmu0uC6jp&&L#>Le8m+pl9=2L*^{UnTR+p@9S=(6$Tc=oStS49t z)+?;HS|74LXZ^#VL4*7TB@ZeYq#wi&S~2MPK}QB%9Q5m8`@vy@GX~cV?i~Ek;0=TK z4?aEk2OArkAe&U1Y8#WyLpGai4%(cz`9^b`&`%L>r z`}^$I*dMh2+<|iNcgS#PaG2|`*5Q!DB}djV*fG~}g5x5`=NykZ-f*&aigT)Pn(DO5 zX|K}-XUaLqIoG+x`C;en&L^FJbMbOXbJ4jhaM|i|%;jfS57$&zo$Er^ZLTL=e{)m1 zWx7ptd&F(0+b8a{dzgEP`xN)5+z+{b?cwM#%%j0$p~rTQGoGYpm}jZybk8-O?|RhOBP>!8=y-p<~s-V?kZ^?uF!s*i)u2p_%Aqdxn5zEV0V)08dB70Nf1H+(&P zb9_5}yM2%P-tr6fEBBk@x6SVpe{26F|0e%O{SWxx2=ECg2$&J@Y`~d7tH7kd=D^1T z4+s7n6dY6;bbrv!pew-!g zhll(b9Ut8S>)TnCy=s(dj_Os__c38H4Kb@?K8m%8&5E5J`%3J0ap7^gxToSij(3PJ zh`&GnK>QyGi3x^;tqE5X0}{t2KACtb$uX%oX>rn#WF|R1d3N%i{nCjZ1qC*(M#%Dd7bt5}IdwTZ% z9403(=aHOKxn8*qxtnrtj7l6ebJQDogY(MrR_1+{AC_;(f3<)t7*(*W;9Ox~VO!zO zBBCg_Xj#!G#lgjsig%Z=CB-GHO1>;rmCh(VT;@<#SGKwACr!HMVa?g{kn+y*0~NLv zwH2Exey&tkF0H&UddTRRqu;4=uhLh&Qq5IYRIjhTS(91wSk0x{_}clkC&vVjnL6gJ zvF>AA#_p}Nt<%=+7{`pO9JhJg@7f}5kM?GLZvB(>HySb;9&fnTnA-Sg<5gXXZmI5a zQ%cj)rYqx9#xEOxwRvRo^5(Dg8Tys_?D_1&(pt_59}r)5oBH=Ul|F#W&`-xSrC8?LYgz*_Yt@ znT>+AFj07KPV}6mbAFs#Irr83yzb-g`+Q#Zyl3aj=Nsmqx_{XHPd`9Epnu@#g4hL5 zEckO_N z3!eOWb>r$|Po+M!^=YrC7d`#kGx}#f?#}LhxhJS+`5Jc3)qEc zTK~s}whb3HmTr7wQ{tvgn>{x_{4Duw=d)M0)Nc9UIrVd|Y>nL7z0G;sqUVX{JD>mR zg>f&O+@81nz>cIHTVD)(@yVAQURwAvdb#W68#|kKUU;SIl@E7~+I8U7VXwZlJ8Jia zJ-&NZ?RDDw@N3qu-S^sG`=;%?xxZuo*RPL%{qqBL2hJWGeek0p`Q#D^!#Pkwx=_SA)s8$Z5sy5;nDXC|Myb(ROle&HvIPnMte zJm2$a=%?E*BwW~gQGM~<&&obK`+39X*S;`*@%yFwzO?yr`DLHWo36xM*>g4P>IYxd ze0Aws$F*Bu&;Q2mn+|5NKv zw|-vui`y?7e@*)J@NbpBUA{HtckcHUe}w+=>YsUkp8KoyufIS)G|4bP>(gT_8SoA< zIwxE7g*}}m@IDoE%W$?)uTl+r=YRsPXBudr?h^hlJn=i>lDav-M=S*%q8o1VT?hB~ z;@f-QBHk7K@{a=-af&z%e8d&v2jVwGAq8?lO1K9n5Cx-9IM^o}HG(&OGipah;2x&H z-Mer@1p>DnG!LzUyLC^a^XLNl41IyF!J+#%fP=URx9a{1NB_9N@#FDiA~~GQCX0cC z7)R>KHaJ!p&c}gUa-Si001xpNc@%hvkIB!0i};0ND0lJpTYoALZoiGD;^73%3@Q_D zzRh*K>UiDpmgApJgPasju1+3KN~d@y&~V^?B$EC@TL=7eDu6?QEZXjJSuHq!fabqa zHd>~H#UJ*WK>t5WAZNoCfI#vBDXf?Ip*^xX**G}7Xb)@$@J|Tj9D%$K&f*mhZ1?+n z?Y(rU#QzWpADkf_uJJef063C(Y}o%8QvfW71nY`=N% zIf0xjdbr72Wo@9P#Ci9~TCp3OLIW2Db}6+cWx~){m9n@%@s+fjVnD9lgdJ$WEn9`M z$+D^7q=v(~WnBUZ?padI8ND&3ciwz;6I=)-n~M%@hEuqE$oFO7G9o&T%p()%dN2b6 zXE%X_-EA-@1EYQLB6*ev-x1g;?dPB&le|XA#dQk7;x(eLk8Hp$S0;QuaAXH|*wjrK z`rp100nRao`Q-*$x(GrAx~q{y2~h#3T#RLAz%9WKGmpc~z?+z@%=654W+&Vbya(wnVm6_9*bVD`dN6*R5=i)@{2{eY_uwhgn5u#K`EW;@(A#df4^zHOCljqMoQI$N!6gRRci zU~96SY&#V=?-{nUYxNe&ED2N+kTq;T>B;V%j_SsUtzz}{z?1&_HWrAv;WBc zr2WVCXY9{8I634v%yHP|aKPbxhhq*OIh=Ah?QquNSK#jlIodedIyyQ!JGwf$JH|L_ z9JP+q9A`Mra^xN7INs+t-|+#*g^r6IA97scxYY4kkOQ_kzTmjS@g>Kdj=LOpJMMMd z=Xk*J4aYYf&p6pS#WE-#OYj);Zoe$$6;raOYy@D(A7z zWxmGegD-Oh)ck2;@q{>=Fc=P#YFIDhN> zo%0XQH=TcWv2w9@33dr}NpKnEGRCFOMe8!bWwOh3m-}5Fb$QHXxyuTdH7>8XyyJ4l zTiS7+hz%&UKyVdcW%e*X6EHyT0an z(DgIdZ(YB0{lWF7o3)#Zo12@5o0prP+YmRETdZ5WTe_RtEz2#(t<vc&$<8PG1$Y&Bh@3*qr;=i zV}{2p58mTJkL4aKJXU%<>G71u29Hf1&w6b2cpl`RH$BdIT=Dq9lkj9bIZrE3xu?R@ z-qX=D)N{CJCdfq^&kE1cp4FbUo?|`7c?zDZJzw`c?)jY;<7MYH#7pHB>lN>n=#}g> z%qzufq?g94!fUiwwO6gzSg-M3Z6HY*yi8t`z2-dF6KHZsh@x{N7X^QNFD_r97=XtNcXy zqw*(T%9ruwe64()eO-OsK`spPjrEQ9P4rFnUFW;q_eI~AeP8iC?R(bu6W>pLFZzD& zd&&2*?^WMF{RltOkM?8zWPWyj?tY$r-hN6yKfeG!m0zr1ykDZ9+Aqs5$8VHhrC*g_ zjo%o*34SepZGIho)BNuDTj00I??J!c{5gLs|3UsX{zLs+{U7pQ;=dGR&*lCr{8#!v z>Hn1f4*!?@clz)0-|fHG|K|WAfD5n+7!+U=U>o2W;2oe0@Cz6cpbCf$h!02)PzPiM z$A8T?f6Gr>Kddn4?vu!~_ogcIRb;e*3%!|lVJ!o9yzL}5fpL|MeRi188nh=~!c5vGVK5nT~8B4$P0AF(82b;R0;^${B* zHb=Y=@nXcw5xXLGM;wYc8gVw_e8k0wFCxB-xDxSuBok?)YEU()+Ep`E_o)`CR;Zp; zZB@OXdQr6#Gz)uG`&9>3Z>mnK&Z^FszT~>Xi`bKp_^@HkW%;1>Nn1q;u7(Qlc z%(j@*E{ao8p_}JLBiX&x?N`eo_2G z@sGqm8s8niHhz8lruZ%K+v2y!zZicd!9AfcVSd8)gmVd(U|}4cT$`*haW*sUN3aO1+$VHTCPX zg0$*1U0QS6#I&}wNol6E*=cjq=A}K5wkYkPv?Xc#)4omjO3zR4On*3iZTbu8+tYV| zj^wrU*VErfe>445`o;7w(l4ifmHtgeVMb*}V}?EhjIlCI8B;R4GNxzD$yku_RK|vk z!x=|2uB&Oao!VaQpmtLGsRPx)>M(VrdWd>B=vhXo3)IExGIfPot8P?}S5Hv4syoyM z^(ysV^=b7tnQW#*rhBGWrZUq%Gb|HMp3RKSjL%eO>N2Nh3YiNtmt`)`d?IsI=EltD zGM~@fk@-sI?#$OR_h-JD`BCPL%s;Z&EUT=+S+-gBSsq#5S-x2TS;1MMSwpfCveL2& zvTC#DXKl|qmGwo|wXEw|-(~%nbt~)7Y?MuBv)Rh*#O$){aoO7J`s~K+N!f;MV|Hiu ztn5YEE3#K*Kb75`y*7J8_U7!J*{^2r&EB7VF#FByBiV0fpUA$LeJjT=XLwFg&gh(Z zIS+xh=+T_zIo&y1bGGF?pR+w@cg~TV4|6`sIhAuJ=aZZ-bFSumo%3zZ_c=f2qFgGM z$(7|U$X%YhB6nr(>QUaK!be4p8Zs(o)Q(a6M;#dT#;C)2IeF!I&3O~^+VUplnewLO zP0O2^$LGz>Tb}ns-m1LSc~9r{FTr0R<@Lj== z1wR*B7upos7TOg$6gn5W6?znU6)Fq;3P%=>Eu2%hw(v;d^&*s<8TIIuXTII}pXIIp;{xTIK9Tv=RQJf?VDv9Wk^@zmmJ#WRX$ z7tblauXuj(g5pKR8;cJYUn{XGQI%AdOfOkkva94k$)S=XC2yA;FF9B8Y01TsFG{{F zxl(eo3LC4ZKpQmRy08d(}s8ef`Jno^otno*irswvf$HkIm2TS_ODno6gXc9lL* z`dI14(q~JzmcCH>V(HG(S4;Pn?k_!9db0F%>DkgxN*Fhbum)I9+kB;(W!$iq9)9Ra~z4vEt{7-zxs7 zBr3^DpUQ|zRb^adV&(A4k(KG7%Pgy`sBEZguAEreR%xu9T-jAQy>emYqZW^}~p;?aiD%SZ1S zePQ%pRo+#>Rbf?;RYR(hs?w^|RoPXestT%#s^IG6s&Q2fRZXBXZK-OjT2!^7YIW5! zRcop?Ry|v_wd(n*eN_jl-mm(o>QvR4s!yvvtGZNmx$38Cs@l2Qt=hBNr`oSNusWnV zygI5{RjsbhuFkE_t1hT6t}d%Cudb}FuCA@_s$NmOr}}&iSrbx|Uo)|0Va>9dw_`TuU@m$v5BK0c+>ZzFAQs>ughYcb z!ozq3k7FG+U^@=rYmA#Dv)=45yG@}fGwmj79-7By%)BuZX3Bgp(`LrZnXl#>Ws#2* z6;nB#pi^Y2iq23CU8W#4QWG`PO=_Xr)Ipsz&db=tyV%EjxsZvAxP(jj7+3IV7Ovv+ zT+0Ez&LIwSgj>0bquj$W?&D#8%A@>_Kk;Xd^DNKv0{`Sc{v>~jf3>Z&&R(!V+i06? zvklp>jo7H|u@7vY?YDz=$PU|SSt(xeOPN$iwVahYsh6O%NUPkH`_d~hc_Po`xxA23 zc_|YzCGX{<%*Yp+lLfcJt#YYujZ1SI+-8^IwzzFB%VoQr&g=4B;`{S&$;pdOX;}1s Hx<`KjZR#kC delta 9995 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 diff --git a/Side-dish/Side-dish/View/FoodCardCell.swift b/Side-dish/Side-dish/View/FoodCardCell.swift index f5ea73342..2d6a929ef 100644 --- a/Side-dish/Side-dish/View/FoodCardCell.swift +++ b/Side-dish/Side-dish/View/FoodCardCell.swift @@ -11,4 +11,8 @@ class FoodCardCell: UICollectionViewCell { static var identifier: String { return String(describing: self) } + + static var nib : UINib { + return UINib(nibName: identifier, bundle: nil) + } } diff --git a/Side-dish/Side-dish/View/FoodCardCell.xib b/Side-dish/Side-dish/View/FoodCardCell.xib index 9be8cc414..143424ab2 100644 --- a/Side-dish/Side-dish/View/FoodCardCell.xib +++ b/Side-dish/Side-dish/View/FoodCardCell.xib @@ -1,89 +1,124 @@ - + - + + - - + + - - - + + + - - + + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + + + + + + diff --git a/Side-dish/Side-dish/ViewController.swift b/Side-dish/Side-dish/ViewController.swift index f49f82432..3a59d33a5 100644 --- a/Side-dish/Side-dish/ViewController.swift +++ b/Side-dish/Side-dish/ViewController.swift @@ -16,7 +16,7 @@ class ViewController: UIViewController { self.navigationController?.navigationBar.isHidden = true configureCollectionView() - self.collectionView.register(FoodCardCell.self, forCellWithReuseIdentifier: FoodCardCell.identifier) + self.collectionView.register(FoodCardCell.nib, forCellWithReuseIdentifier: FoodCardCell.identifier) self.collectionView.dataSource = self self.collectionView.delegate = self } @@ -52,7 +52,6 @@ extension ViewController: UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: FoodCardCell.identifier, for: indexPath) as! FoodCardCell - cell.backgroundColor = .green return cell } } From 316b27968dd830cd73673bcfac0ccc0693fe09bb Mon Sep 17 00:00:00 2001 From: hoonha choi Date: Mon, 19 Apr 2021 21:57:23 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Update:=20=EC=BB=AC=EB=A0=89=EC=85=98?= =?UTF-8?q?=EB=B7=B0=20=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B3=B4=EB=93=9C?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Side-dish/Side-dish.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 36106 -> 38764 bytes Side-dish/Side-dish/Info.plist | 4 + Side-dish/Side-dish/Main.storyboard | 82 ++++++++++++++++++ Side-dish/Side-dish/SceneDelegate.swift | 7 +- Side-dish/Side-dish/View/FoodCardCell.xib | 2 +- Side-dish/Side-dish/View/Main.Storyboard | 7 ++ Side-dish/Side-dish/ViewController.swift | 37 ++------ 8 files changed, 105 insertions(+), 38 deletions(-) create mode 100644 Side-dish/Side-dish/Main.storyboard create mode 100644 Side-dish/Side-dish/View/Main.Storyboard diff --git a/Side-dish/Side-dish.xcodeproj/project.pbxproj b/Side-dish/Side-dish.xcodeproj/project.pbxproj index 363bfbe24..64135598c 100644 --- a/Side-dish/Side-dish.xcodeproj/project.pbxproj +++ b/Side-dish/Side-dish.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ BFCE4957262D4891006C0882 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4956262D4891006C0882 /* ViewController.swift */; }; BFCE495C262D4895006C0882 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BFCE495B262D4895006C0882 /* Assets.xcassets */; }; BFCE495F262D4895006C0882 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */; }; + BFCE496F262D883F006C0882 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFCE496E262D883F006C0882 /* Main.storyboard */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -26,6 +27,7 @@ BFCE495B262D4895006C0882 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; BFCE495E262D4895006C0882 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; BFCE4960262D4895006C0882 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BFCE496E262D883F006C0882 /* Main.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -71,6 +73,7 @@ BFCE4954262D4891006C0882 /* SceneDelegate.swift */, 8844B7C1262D6CEC00FA49E9 /* View */, BFCE4956262D4891006C0882 /* ViewController.swift */, + BFCE496E262D883F006C0882 /* Main.storyboard */, BFCE495B262D4895006C0882 /* Assets.xcassets */, BFCE495D262D4895006C0882 /* LaunchScreen.storyboard */, BFCE4960262D4895006C0882 /* Info.plist */, @@ -138,6 +141,7 @@ 8844B7C4262D6ED500FA49E9 /* FoodCardCell.xib in Resources */, BFCE495F262D4895006C0882 /* LaunchScreen.storyboard in Resources */, BFCE495C262D4895006C0882 /* Assets.xcassets in Resources */, + BFCE496F262D883F006C0882 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Side-dish/Side-dish.xcodeproj/project.xcworkspace/xcuserdata/hoonhachoi.xcuserdatad/UserInterfaceState.xcuserstate b/Side-dish/Side-dish.xcodeproj/project.xcworkspace/xcuserdata/hoonhachoi.xcuserdatad/UserInterfaceState.xcuserstate index 9c0db6b488cd92f8cde6004e8deb3aeb390c8fce..b61d3858468f3f2b54e7ed7429cceb8b2799ecc5 100644 GIT binary patch delta 16099 zcmaia2V7Iv`+m;3Gbkj?unB|>VTo+SKo|)ljDU&)1ri{Lpn!Yi9^9*rs8wsL;HaZ& z-Fxr7YHhXFSzAZz9<5dXCj=B*zrR0xvd+Et-19u|d*0_g?>&>|!v|~N^iptkM%f`z z0_YB8AQ2=1IYnHbm`x9LN0OsRJ;{-X98XRlr;=Zg zbIEz+VsZ(&lw3uAOMXXgB#)CP$dlwL@-%sdJWHM<&yyF(-^ky|yW~CcKKX!rLcS&6 zQ9KGzkYXu5r8lD-DJROAa-m!)H%d&oQy!EL6R3&QBx*7>g_=supypEZsD;!bYB{xnT1l;@ z)=-8^A<-Hle$`E&u@gYHT9q6_KXbRW8iE~TsJTDp!NOb?+s z8qwov13ioWnqEjRqL
  • 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 Configuration UISceneDelegateClassName $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main @@ -41,6 +43,8 @@ UILaunchStoryboardName LaunchScreen + UIMainStoryboardFile + Main UIRequiredDeviceCapabilities armv7 diff --git a/Side-dish/Side-dish/Main.storyboard b/Side-dish/Side-dish/Main.storyboard new file mode 100644 index 000000000..a4d2ef32d --- /dev/null +++ b/Side-dish/Side-dish/Main.storyboard @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Side-dish/Side-dish/SceneDelegate.swift b/Side-dish/Side-dish/SceneDelegate.swift index 0509962ca..c21a88f6a 100644 --- a/Side-dish/Side-dish/SceneDelegate.swift +++ b/Side-dish/Side-dish/SceneDelegate.swift @@ -12,12 +12,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { - guard let screen = (scene as? UIWindowScene) else { return } - let viewController = ViewController() - window = UIWindow(frame: screen.coordinateSpace.bounds) - window?.windowScene = screen - window?.rootViewController = UINavigationController(rootViewController: viewController) - window?.makeKeyAndVisible() + guard let _ = (scene as? UIWindowScene) else { return } } } diff --git a/Side-dish/Side-dish/View/FoodCardCell.xib b/Side-dish/Side-dish/View/FoodCardCell.xib index 143424ab2..d4eecfea3 100644 --- a/Side-dish/Side-dish/View/FoodCardCell.xib +++ b/Side-dish/Side-dish/View/FoodCardCell.xib @@ -17,7 +17,7 @@ - + diff --git a/Side-dish/Side-dish/View/Main.Storyboard b/Side-dish/Side-dish/View/Main.Storyboard new file mode 100644 index 000000000..f9a048edf --- /dev/null +++ b/Side-dish/Side-dish/View/Main.Storyboard @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Side-dish/Side-dish/ViewController.swift b/Side-dish/Side-dish/ViewController.swift index 3a59d33a5..beda888dd 100644 --- a/Side-dish/Side-dish/ViewController.swift +++ b/Side-dish/Side-dish/ViewController.swift @@ -8,41 +8,16 @@ import UIKit class ViewController: UIViewController { - private var collectionView: UICollectionView! + + @IBOutlet weak var SideDishCollectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() - self.view.backgroundColor = .white - self.navigationController?.navigationBar.isHidden = true - configureCollectionView() - - self.collectionView.register(FoodCardCell.nib, forCellWithReuseIdentifier: FoodCardCell.identifier) - self.collectionView.dataSource = self - self.collectionView.delegate = self - } - - func makeCollectionView(){ - let layout = UICollectionViewFlowLayout() - layout.scrollDirection = .vertical - layout.minimumLineSpacing = 8 - layout.minimumInteritemSpacing = 0 -// layout.itemSize = CGSize(width: view.frame.width / 2, height: view.frame.width / 2) - collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) - collectionView.backgroundColor = .systemBackground - collectionView.translatesAutoresizingMaskIntoConstraints = false - } - - func configureCollectionView() { - makeCollectionView() - self.view.addSubview(collectionView) - let safeArea = self.view.safeAreaLayoutGuide - NSLayoutConstraint.activate([ - collectionView.topAnchor.constraint(equalTo: safeArea.topAnchor), - collectionView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor), - collectionView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 16), - collectionView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: -16) - ]) + SideDishCollectionView.register(FoodCardCell.nib, forCellWithReuseIdentifier: FoodCardCell.identifier) + SideDishCollectionView.dataSource = self + SideDishCollectionView.delegate = self } + } extension ViewController: UICollectionViewDataSource { From 104d23e3dd80914025f73079601e045a83e5fa9d Mon Sep 17 00:00:00 2001 From: JUNGYUN-Daegu/JUNGYUN-Daegu/jungyun Date: Mon, 19 Apr 2021 22:18:57 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Create:=20=EC=95=84=EC=9D=B4=ED=85=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Side-dish/Side-dish.xcodeproj/project.pbxproj | 24 +++++++++++ .../Side-dish/DataLayer/Model/Category.swift | 18 ++++++++ .../Side-dish/DataLayer/Model/Item.swift | 41 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 Side-dish/Side-dish/DataLayer/Model/Category.swift create mode 100644 Side-dish/Side-dish/DataLayer/Model/Item.swift diff --git a/Side-dish/Side-dish.xcodeproj/project.pbxproj b/Side-dish/Side-dish.xcodeproj/project.pbxproj index 64135598c..fdf55bda9 100644 --- a/Side-dish/Side-dish.xcodeproj/project.pbxproj +++ b/Side-dish/Side-dish.xcodeproj/project.pbxproj @@ -9,6 +9,8 @@ /* Begin PBXBuildFile section */ 8844B7BF262D6C3000FA49E9 /* FoodCardCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8844B7BE262D6C3000FA49E9 /* FoodCardCell.swift */; }; 8844B7C4262D6ED500FA49E9 /* FoodCardCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8844B7C3262D6ED500FA49E9 /* FoodCardCell.xib */; }; + 8844B7D0262DB6A500FA49E9 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8844B7CF262DB6A500FA49E9 /* Item.swift */; }; + 8844B7D4262DBA3F00FA49E9 /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8844B7D3262DBA3F00FA49E9 /* Category.swift */; }; BFCE4953262D4891006C0882 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4952262D4891006C0882 /* AppDelegate.swift */; }; BFCE4955262D4891006C0882 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4954262D4891006C0882 /* SceneDelegate.swift */; }; BFCE4957262D4891006C0882 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCE4956262D4891006C0882 /* ViewController.swift */; }; @@ -20,6 +22,8 @@ /* Begin PBXFileReference section */ 8844B7BE262D6C3000FA49E9 /* FoodCardCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoodCardCell.swift; sourceTree = ""; }; 8844B7C3262D6ED500FA49E9 /* FoodCardCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FoodCardCell.xib; sourceTree = ""; }; + 8844B7CF262DB6A500FA49E9 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; + 8844B7D3262DBA3F00FA49E9 /* Category.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Category.swift; sourceTree = ""; }; BFCE494F262D4891006C0882 /* Side-dish.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Side-dish.app"; sourceTree = BUILT_PRODUCTS_DIR; }; BFCE4952262D4891006C0882 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BFCE4954262D4891006C0882 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -50,6 +54,23 @@ path = View; sourceTree = ""; }; + 8844B7CD262DB62C00FA49E9 /* DataLayer */ = { + isa = PBXGroup; + children = ( + 8844B7CE262DB63B00FA49E9 /* Model */, + ); + path = DataLayer; + sourceTree = ""; + }; + 8844B7CE262DB63B00FA49E9 /* Model */ = { + isa = PBXGroup; + children = ( + 8844B7CF262DB6A500FA49E9 /* Item.swift */, + 8844B7D3262DBA3F00FA49E9 /* Category.swift */, + ); + path = Model; + sourceTree = ""; + }; BFCE4946262D4891006C0882 = { isa = PBXGroup; children = ( @@ -69,6 +90,7 @@ BFCE4951262D4891006C0882 /* Side-dish */ = { isa = PBXGroup; children = ( + 8844B7CD262DB62C00FA49E9 /* DataLayer */, BFCE4952262D4891006C0882 /* AppDelegate.swift */, BFCE4954262D4891006C0882 /* SceneDelegate.swift */, 8844B7C1262D6CEC00FA49E9 /* View */, @@ -152,10 +174,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8844B7D0262DB6A500FA49E9 /* Item.swift in Sources */, BFCE4957262D4891006C0882 /* ViewController.swift in Sources */, BFCE4953262D4891006C0882 /* AppDelegate.swift in Sources */, BFCE4955262D4891006C0882 /* SceneDelegate.swift in Sources */, 8844B7BF262D6C3000FA49E9 /* FoodCardCell.swift in Sources */, + 8844B7D4262DBA3F00FA49E9 /* Category.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Side-dish/Side-dish/DataLayer/Model/Category.swift b/Side-dish/Side-dish/DataLayer/Model/Category.swift new file mode 100644 index 000000000..41bcc13f0 --- /dev/null +++ b/Side-dish/Side-dish/DataLayer/Model/Category.swift @@ -0,0 +1,18 @@ +// +// Category.swift +// Side-dish +// +// Created by 조중윤 on 2021/04/19. +// + +import Foundation + +struct Category: Codable { + let categoryID, name: String + let items: [Item] + + enum CodingKeys: String, CodingKey { + case categoryID = "category_id" + case name, items + } +} diff --git a/Side-dish/Side-dish/DataLayer/Model/Item.swift b/Side-dish/Side-dish/DataLayer/Model/Item.swift new file mode 100644 index 000000000..4119da232 --- /dev/null +++ b/Side-dish/Side-dish/DataLayer/Model/Item.swift @@ -0,0 +1,41 @@ +// +// Item.swift +// Side-dish +// +// Created by 조중윤 on 2021/04/19. +// + +import Foundation + +struct Item: Codable { + let detailHash: String + let image: String + let alt: String + let deliveryType: [DeliveryType] + let title: String + let description: String + let nPrice: String? + let sPrice: String + let badge: [Badge]? + + enum CodingKeys: String, CodingKey { + case detailHash = "detail_hash" + case image, alt + case deliveryType = "delivery_type" + case title, description + case nPrice = "n_price" + case sPrice = "s_price" + case badge + } +} + +enum DeliveryType: String, Codable { + case dawnDelivery = "새벽배송" + case nationDelivery = "전국택배" +} + +enum Badge: String, Codable { + case eventPrice = "이벤트특가" + case launchingPrice = "론칭특가" + case bestPrice = "베스트" +}