Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

박스오피스 [Step3] Kobe, yyss99 #102

Open
wants to merge 45 commits into
base: ic_9_kobingu
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
a178d97
Update README.md
devKobe24 Jul 28, 2023
14cace6
✨feat: NetworkManager 구현 및 MakeURLRequestError 오류 타입 구현
yy-ss99 Jul 28, 2023
a59328f
:recycle: Refactor: getBoxOfficeData 메서드 생성 및 구현.
Jul 28, 2023
a9edfeb
♻️refactor: NetworkManager 수정
yy-ss99 Aug 1, 2023
a2ccadc
:sparkles: Feat: NetworkConfigurable 프로토콜 구현 및 확장.
Aug 1, 2023
4295756
♻️refactor: 네이밍 수정 및 컨벤션 수정
yy-ss99 Aug 1, 2023
cf168a7
♻️refactor: NetworkConfigurable에 generateURL 메서드 추가
yy-ss99 Aug 1, 2023
68145ac
:sparkles: Feat: NetworkConfigurableError 타입 구현.
Aug 1, 2023
77bdf42
:recycle: Refactor: throw NetworkConfigurableError 케이스 수정.
Aug 1, 2023
4cf827c
♻️refactor: App Transport Security Settings Key를 추가
yy-ss99 Aug 1, 2023
58cef62
:recycle: Refactor: API.plist gitignore 추가.
Aug 1, 2023
d1651b5
:recycle: Refactor: API_KEY gitignore 추가.
Aug 1, 2023
8f92348
:sparkles: Feat: Bundle 확장 및 내부 구현.
Aug 1, 2023
150923a
♻️refactor: author 수정
yy-ss99 Aug 1, 2023
71dca74
:sparkles: Feat: BoxOffice 데이터 출력을 위한 함수 구현.
Aug 1, 2023
98d430b
Update README.md
devKobe24 Aug 4, 2023
e57aca7
✨feat: NetWorkManagerError 생성
yy-ss99 Aug 4, 2023
883803c
:sparkles: Feat: Section 모델 구현.
Aug 6, 2023
c2e7e30
:sparkles: Feat: UIConfigurationStateCustomKey 확장 및 구현.
Aug 6, 2023
d32bb26
:sparkles: Feat: UICellConfigurationState 확장.
Aug 6, 2023
0a171d2
♻️refactor: UICellConfigurationState에 Item 추가
yy-ss99 Aug 8, 2023
253fc4f
Revert "♻️refactor: UICellConfigurationState에 Item 추가"
Aug 8, 2023
03dc902
♻️refactor: boxOffice 구조체에 Hashable 포로토콜 채택
yy-ss99 Aug 8, 2023
d6815c9
♻️refactor: UICellConfigurationState에 Item 추가
yy-ss99 Aug 8, 2023
94e01e5
:sparkles: Feat: CustomListCell 생성.
Aug 8, 2023
92bcfa3
♻️refactor: ItemListCell로 파일명 변경
yy-ss99 Aug 8, 2023
b78ceb3
✨feat: CustomListCell 구현
yy-ss99 Aug 8, 2023
a798ae8
:recycle: Refactor: configureDataSource, creatLayout 함수 구현
Aug 8, 2023
71a432f
✨feat: Item 타입 생성
yy-ss99 Aug 10, 2023
df1fb7a
♻️refactor: Item 타입으로 수정
yy-ss99 Aug 10, 2023
b0dc510
:recycle: Refactor: generateURL 함수 수정.
Aug 10, 2023
e47aefe
:recycle: Refactor: fetchBoxOfficeData 함수 생성, Item으로 수정.
Aug 10, 2023
e336f6e
:recycle: Refactor: CustomListCell Layout 수정.
Aug 10, 2023
3456c51
♻️refactor: ViewController refresh 기능 구현, navigationController 추가
yy-ss99 Aug 10, 2023
9810731
Update README.md
devKobe24 Aug 11, 2023
330f7da
:recycle: Refactor: CustomListCell Layout 수정.
Aug 11, 2023
4fab68e
✨feat: DateFormatter extension 파일 생성 및 구현, viewController에 적용
yy-ss99 Aug 11, 2023
10df232
:sparkles: Feat: String을 확장하여 numberformat 함수 구현.
Aug 12, 2023
9494488
:recycle: Refactor: numberformat 메서드 적용.
Aug 12, 2023
7beeb16
♻️refactor: rankChangeLabel 순위 등락 표시 생성 및 적용
yy-ss99 Aug 12, 2023
80de1f2
:sparkles: Feat: DetailViewController 생성.
Aug 13, 2023
93ea75e
:recycle: Refactor: DetailViewController로 화면 전환을 위한 메서드 구현
Aug 13, 2023
aaf9d74
♻️refactor: CustomListCell 순위등락 기능 추가
yy-ss99 Aug 13, 2023
6fa850f
♻️refactor: CustomListcell 순위등락 기능 수정
yy-ss99 Aug 13, 2023
6e9dd24
♻️refactor: RankIntensity 추가 및 CustomListCell 등락 표시 기능 수정
yy-ss99 Aug 16, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,7 @@ iOSInjectionProject/
/*.gcno
**/xcshareddata/WorkspaceSettings.xcsettings

### API KEY ###
BoxOffice/API_KEY.plist

# End of https://www.toptal.com/developers/gitignore/api/xcode,swift
84 changes: 84 additions & 0 deletions BoxOffice.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,31 @@
objects = {

/* Begin PBXBuildFile section */
0A9680FE2A7393DD00B78C61 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9680FD2A7393DD00B78C61 /* NetworkManager.swift */; };
0A9681012A73954C00B78C61 /* URLRequestError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9681002A73954C00B78C61 /* URLRequestError.swift */; };
0A9681052A7899A300B78C61 /* EndPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9681042A7899A300B78C61 /* EndPoint.swift */; };
0A9681562A7CE0C900B78C61 /* NetworkManagerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9681552A7CE0C900B78C61 /* NetworkManagerError.swift */; };
0A96815A2A82239300B78C61 /* CustomListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A9681592A82239300B78C61 /* CustomListCell.swift */; };
0A96815C2A84EE7700B78C61 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A96815B2A84EE7700B78C61 /* Item.swift */; };
0A96815E2A86086000B78C61 /* DateFormatter+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A96815D2A86086000B78C61 /* DateFormatter+.swift */; };
63DF20EF2970E1A0005DF7D1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63DF20EE2970E1A0005DF7D1 /* AppDelegate.swift */; };
63DF20F12970E1A0005DF7D1 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63DF20F02970E1A0005DF7D1 /* SceneDelegate.swift */; };
63DF20F32970E1A0005DF7D1 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63DF20F22970E1A0005DF7D1 /* ViewController.swift */; };
63DF20F62970E1A0005DF7D1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 63DF20F42970E1A0005DF7D1 /* Main.storyboard */; };
63DF20F82970E1A1005DF7D1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 63DF20F72970E1A1005DF7D1 /* Assets.xcassets */; };
63DF20FB2970E1A1005DF7D1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 63DF20F92970E1A1005DF7D1 /* LaunchScreen.storyboard */; };
BA2AFE0F2A789593006C852C /* NetworkConfigurable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2AFE0E2A789593006C852C /* NetworkConfigurable.swift */; };
BA2AFE112A78BE27006C852C /* NetworkConfigurableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA2AFE102A78BE27006C852C /* NetworkConfigurableError.swift */; };
BA3D99A92A78CD8E00D7737C /* API_KEY.plist in Resources */ = {isa = PBXBuildFile; fileRef = BA3D99A82A78CD8E00D7737C /* API_KEY.plist */; };
BA3D99AC2A78D25C00D7737C /* Bundle+.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA3D99AB2A78D25C00D7737C /* Bundle+.swift */; };
BA527B142A87674400380A49 /* String+.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA527B132A87674400380A49 /* String+.swift */; };
BA6717802A821EAE0036CB23 /* ItemListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA67177F2A821EAE0036CB23 /* ItemListCell.swift */; };
BAA6E4962A6F5724000569E2 /* BoxOffice.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA6E4952A6F5724000569E2 /* BoxOffice.swift */; };
BAA6E4AF2A6F8F6B000569E2 /* BoxOfficeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAA6E4AE2A6F8F6B000569E2 /* BoxOfficeTests.swift */; };
BAB7E7A62A8864C60023C4A6 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAB7E7A52A8864C60023C4A6 /* DetailViewController.swift */; };
BAF0908A2A7F2E550091C1B7 /* Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAF090892A7F2E550091C1B7 /* Section.swift */; };
BAF0908C2A7F305B0091C1B7 /* UIConfigurationStateCustomKey+.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAF0908B2A7F305B0091C1B7 /* UIConfigurationStateCustomKey+.swift */; };
BAF0908E2A7F325F0091C1B7 /* UICellConfigurationState+.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAF0908D2A7F325F0091C1B7 /* UICellConfigurationState+.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand All @@ -28,6 +45,13 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
0A9680FD2A7393DD00B78C61 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = "<group>"; };
0A9681002A73954C00B78C61 /* URLRequestError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLRequestError.swift; sourceTree = "<group>"; };
0A9681042A7899A300B78C61 /* EndPoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EndPoint.swift; sourceTree = "<group>"; };
0A9681552A7CE0C900B78C61 /* NetworkManagerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManagerError.swift; sourceTree = "<group>"; };
0A9681592A82239300B78C61 /* CustomListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomListCell.swift; sourceTree = "<group>"; };
0A96815B2A84EE7700B78C61 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = "<group>"; };
0A96815D2A86086000B78C61 /* DateFormatter+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DateFormatter+.swift"; sourceTree = "<group>"; };
63DF20EB2970E1A0005DF7D1 /* BoxOffice.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BoxOffice.app; sourceTree = BUILT_PRODUCTS_DIR; };
63DF20EE2970E1A0005DF7D1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
63DF20F02970E1A0005DF7D1 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
Expand All @@ -36,10 +60,20 @@
63DF20F72970E1A1005DF7D1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
63DF20FA2970E1A1005DF7D1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
63DF20FC2970E1A1005DF7D1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BA2AFE0E2A789593006C852C /* NetworkConfigurable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConfigurable.swift; sourceTree = "<group>"; };
BA2AFE102A78BE27006C852C /* NetworkConfigurableError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkConfigurableError.swift; sourceTree = "<group>"; };
BA3D99A82A78CD8E00D7737C /* API_KEY.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = API_KEY.plist; sourceTree = "<group>"; };
BA3D99AB2A78D25C00D7737C /* Bundle+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+.swift"; sourceTree = "<group>"; };
BA527B132A87674400380A49 /* String+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+.swift"; sourceTree = "<group>"; };
BA67177F2A821EAE0036CB23 /* ItemListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListCell.swift; sourceTree = "<group>"; };
BAA6E4952A6F5724000569E2 /* BoxOffice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoxOffice.swift; sourceTree = "<group>"; };
BAA6E4AC2A6F8F6B000569E2 /* BoxOfficeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BoxOfficeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
BAA6E4AE2A6F8F6B000569E2 /* BoxOfficeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoxOfficeTests.swift; sourceTree = "<group>"; };
BAA6E4B52A6F8F79000569E2 /* BoxOfficeTestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = BoxOfficeTestPlan.xctestplan; sourceTree = "<group>"; };
BAB7E7A52A8864C60023C4A6 /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = "<group>"; };
BAF090892A7F2E550091C1B7 /* Section.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Section.swift; sourceTree = "<group>"; };
BAF0908B2A7F305B0091C1B7 /* UIConfigurationStateCustomKey+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIConfigurationStateCustomKey+.swift"; sourceTree = "<group>"; };
BAF0908D2A7F325F0091C1B7 /* UICellConfigurationState+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UICellConfigurationState+.swift"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand All @@ -65,6 +99,8 @@
children = (
63DF20F42970E1A0005DF7D1 /* Main.storyboard */,
63DF20F92970E1A1005DF7D1 /* LaunchScreen.storyboard */,
BA67177F2A821EAE0036CB23 /* ItemListCell.swift */,
0A9681592A82239300B78C61 /* CustomListCell.swift */,
);
path = View;
sourceTree = "<group>";
Expand All @@ -73,6 +109,7 @@
isa = PBXGroup;
children = (
63DF20F22970E1A0005DF7D1 /* ViewController.swift */,
BAB7E7A52A8864C60023C4A6 /* DetailViewController.swift */,
);
path = Controller;
sourceTree = "<group>";
Expand All @@ -87,6 +124,16 @@
path = Resource;
sourceTree = "<group>";
};
0A9680FF2A73950A00B78C61 /* Error */ = {
isa = PBXGroup;
children = (
0A9681002A73954C00B78C61 /* URLRequestError.swift */,
BA2AFE102A78BE27006C852C /* NetworkConfigurableError.swift */,
0A9681552A7CE0C900B78C61 /* NetworkManagerError.swift */,
);
path = Error;
sourceTree = "<group>";
};
63DF20E22970E1A0005DF7D1 = {
isa = PBXGroup;
children = (
Expand All @@ -108,19 +155,39 @@
63DF20ED2970E1A0005DF7D1 /* BoxOffice */ = {
isa = PBXGroup;
children = (
BA3D99AA2A78D22900D7737C /* Extension */,
0A9680FF2A73950A00B78C61 /* Error */,
0A9680FA2A6FA44C00B78C61 /* Resource */,
0A9680F92A6FA3C800B78C61 /* Controller */,
0A9680F82A6FA3BE00B78C61 /* View */,
BAA6E4942A6F56D2000569E2 /* Model */,
63DF20FC2970E1A1005DF7D1 /* Info.plist */,
BA3D99A82A78CD8E00D7737C /* API_KEY.plist */,
);
path = BoxOffice;
sourceTree = "<group>";
};
BA3D99AA2A78D22900D7737C /* Extension */ = {
isa = PBXGroup;
children = (
BA3D99AB2A78D25C00D7737C /* Bundle+.swift */,
BAF0908B2A7F305B0091C1B7 /* UIConfigurationStateCustomKey+.swift */,
BAF0908D2A7F325F0091C1B7 /* UICellConfigurationState+.swift */,
0A96815D2A86086000B78C61 /* DateFormatter+.swift */,
BA527B132A87674400380A49 /* String+.swift */,
);
path = Extension;
sourceTree = "<group>";
};
BAA6E4942A6F56D2000569E2 /* Model */ = {
isa = PBXGroup;
children = (
BAA6E4952A6F5724000569E2 /* BoxOffice.swift */,
0A9680FD2A7393DD00B78C61 /* NetworkManager.swift */,
BA2AFE0E2A789593006C852C /* NetworkConfigurable.swift */,
0A9681042A7899A300B78C61 /* EndPoint.swift */,
BAF090892A7F2E550091C1B7 /* Section.swift */,
0A96815B2A84EE7700B78C61 /* Item.swift */,
);
path = Model;
sourceTree = "<group>";
Expand Down Expand Up @@ -216,6 +283,7 @@
buildActionMask = 2147483647;
files = (
63DF20FB2970E1A1005DF7D1 /* LaunchScreen.storyboard in Resources */,
BA3D99A92A78CD8E00D7737C /* API_KEY.plist in Resources */,
63DF20F82970E1A1005DF7D1 /* Assets.xcassets in Resources */,
63DF20F62970E1A0005DF7D1 /* Main.storyboard in Resources */,
);
Expand All @@ -235,9 +303,25 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BA2AFE112A78BE27006C852C /* NetworkConfigurableError.swift in Sources */,
BA3D99AC2A78D25C00D7737C /* Bundle+.swift in Sources */,
0A96815C2A84EE7700B78C61 /* Item.swift in Sources */,
BAF0908E2A7F325F0091C1B7 /* UICellConfigurationState+.swift in Sources */,
BA2AFE0F2A789593006C852C /* NetworkConfigurable.swift in Sources */,
BA527B142A87674400380A49 /* String+.swift in Sources */,
0A9681012A73954C00B78C61 /* URLRequestError.swift in Sources */,
BAB7E7A62A8864C60023C4A6 /* DetailViewController.swift in Sources */,
0A9681052A7899A300B78C61 /* EndPoint.swift in Sources */,
0A96815A2A82239300B78C61 /* CustomListCell.swift in Sources */,
63DF20F32970E1A0005DF7D1 /* ViewController.swift in Sources */,
BAF0908C2A7F305B0091C1B7 /* UIConfigurationStateCustomKey+.swift in Sources */,
BAA6E4962A6F5724000569E2 /* BoxOffice.swift in Sources */,
0A9680FE2A7393DD00B78C61 /* NetworkManager.swift in Sources */,
0A96815E2A86086000B78C61 /* DateFormatter+.swift in Sources */,
63DF20EF2970E1A0005DF7D1 /* AppDelegate.swift in Sources */,
BA6717802A821EAE0036CB23 /* ItemListCell.swift in Sources */,
BAF0908A2A7F2E550091C1B7 /* Section.swift in Sources */,
0A9681562A7CE0C900B78C61 /* NetworkManagerError.swift in Sources */,
63DF20F12970E1A0005DF7D1 /* SceneDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
12 changes: 12 additions & 0 deletions BoxOffice/API_KEY.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!--
API_KEY.plist
BoxOffice

Created by Minseong Kang on 2023/08/01.
Copyright (c) 2023 ___ORGANIZATIONNAME___. All rights reserved.
-->
<plist version="1.0">
<dict/>
</plist>
17 changes: 17 additions & 0 deletions BoxOffice/Controller/DetailViewController.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// DetailViewController.swift
// BoxOffice
//
// Created by Kobe, yyss99 on 2023/08/13.
//

import UIKit

class DetailViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .systemPink
}

}
Loading