diff --git a/Expo1900/Expo1900.xcodeproj/project.pbxproj b/Expo1900/Expo1900.xcodeproj/project.pbxproj index 38ff06c..a11c7d6 100644 --- a/Expo1900/Expo1900.xcodeproj/project.pbxproj +++ b/Expo1900/Expo1900.xcodeproj/project.pbxproj @@ -7,23 +7,46 @@ objects = { /* Begin PBXBuildFile section */ - 26762AA028DAA70300D43477 /* Expo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26762A9F28DAA70300D43477 /* Expo.swift */; }; - 268C187C28D98A6900981105 /* Relic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268C187B28D98A6900981105 /* Relic.swift */; }; + 265AFE7028E2B5B700D456C5 /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 265AFE6F28E2B5B700D456C5 /* Error.swift */; }; + 26762AA028DAA70300D43477 /* Exposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26762A9F28DAA70300D43477 /* Exposition.swift */; }; + 268C187C28D98A6900981105 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 268C187B28D98A6900981105 /* Item.swift */; }; + 26D4399A28DC28B300722F7B /* ExpositionDataParsingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26D4399928DC28B300722F7B /* ExpositionDataParsingTest.swift */; }; + AAB2964028E6ABE10017ABB7 /* ItemTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAB2963F28E6ABE10017ABB7 /* ItemTableViewCell.swift */; }; + AAEB519C28EBF06000CED9EF /* ItemsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAEB519B28EBF06000CED9EF /* ItemsTableViewController.swift */; }; + AAEB51A228EBF83B00CED9EF /* JSONParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAEB51A128EBF83B00CED9EF /* JSONParser.swift */; }; + AAEB51A428ED29F900CED9EF /* ItemInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAEB51A328ED29F900CED9EF /* ItemInfoViewController.swift */; }; C79FF4B52589F401005FB0FD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C79FF4B42589F401005FB0FD /* AppDelegate.swift */; }; C79FF4B72589F401005FB0FD /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C79FF4B62589F401005FB0FD /* SceneDelegate.swift */; }; - C79FF4B92589F401005FB0FD /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C79FF4B82589F401005FB0FD /* ViewController.swift */; }; + C79FF4B92589F401005FB0FD /* ExpositionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C79FF4B82589F401005FB0FD /* ExpositionViewController.swift */; }; C79FF4BC2589F401005FB0FD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C79FF4BA2589F401005FB0FD /* Main.storyboard */; }; C79FF4BE2589F404005FB0FD /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C79FF4BD2589F404005FB0FD /* Assets.xcassets */; }; C79FF4C12589F404005FB0FD /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C79FF4BF2589F404005FB0FD /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 26D4399B28DC28B300722F7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C79FF4A92589F401005FB0FD /* Project object */; + proxyType = 1; + remoteGlobalIDString = C79FF4B02589F401005FB0FD; + remoteInfo = Expo1900; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ - 26762A9F28DAA70300D43477 /* Expo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Expo.swift; sourceTree = ""; }; - 268C187B28D98A6900981105 /* Relic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Relic.swift; sourceTree = ""; }; + 265AFE6F28E2B5B700D456C5 /* Error.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = ""; }; + 26762A9F28DAA70300D43477 /* Exposition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Exposition.swift; sourceTree = ""; }; + 268C187B28D98A6900981105 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; + 26D4399728DC28B300722F7B /* ExpositionDataParsingTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExpositionDataParsingTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 26D4399928DC28B300722F7B /* ExpositionDataParsingTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpositionDataParsingTest.swift; sourceTree = ""; }; + AAB2963F28E6ABE10017ABB7 /* ItemTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemTableViewCell.swift; sourceTree = ""; }; + AAEB519B28EBF06000CED9EF /* ItemsTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemsTableViewController.swift; sourceTree = ""; }; + AAEB51A128EBF83B00CED9EF /* JSONParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONParser.swift; sourceTree = ""; }; + AAEB51A328ED29F900CED9EF /* ItemInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemInfoViewController.swift; sourceTree = ""; }; C79FF4B12589F401005FB0FD /* Expo1900.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Expo1900.app; sourceTree = BUILT_PRODUCTS_DIR; }; C79FF4B42589F401005FB0FD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; C79FF4B62589F401005FB0FD /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - C79FF4B82589F401005FB0FD /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + C79FF4B82589F401005FB0FD /* ExpositionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpositionViewController.swift; sourceTree = ""; }; C79FF4BB2589F401005FB0FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; C79FF4BD2589F404005FB0FD /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; C79FF4C02589F404005FB0FD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -31,6 +54,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 26D4399428DC28B300722F7B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C79FF4AE2589F401005FB0FD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -41,6 +71,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 265AFE6E28E2B56F00D456C5 /* Error */ = { + isa = PBXGroup; + children = ( + 265AFE6F28E2B5B700D456C5 /* Error.swift */, + ); + path = Error; + sourceTree = ""; + }; 26762AA128DAA84F00D43477 /* View */ = { isa = PBXGroup; children = ( @@ -54,9 +92,12 @@ 26762AA228DAA85500D43477 /* Controller */ = { isa = PBXGroup; children = ( + AAB2963E28E6ABAE0017ABB7 /* Cell */, C79FF4B62589F401005FB0FD /* SceneDelegate.swift */, C79FF4B42589F401005FB0FD /* AppDelegate.swift */, - C79FF4B82589F401005FB0FD /* ViewController.swift */, + C79FF4B82589F401005FB0FD /* ExpositionViewController.swift */, + AAEB519B28EBF06000CED9EF /* ItemsTableViewController.swift */, + AAEB51A328ED29F900CED9EF /* ItemInfoViewController.swift */, ); path = Controller; sourceTree = ""; @@ -64,16 +105,34 @@ 268C187A28D988C100981105 /* Model */ = { isa = PBXGroup; children = ( - 26762A9F28DAA70300D43477 /* Expo.swift */, - 268C187B28D98A6900981105 /* Relic.swift */, + 26762A9F28DAA70300D43477 /* Exposition.swift */, + 268C187B28D98A6900981105 /* Item.swift */, + AAEB51A128EBF83B00CED9EF /* JSONParser.swift */, ); path = Model; sourceTree = ""; }; + 26D4399828DC28B300722F7B /* ExpositionDataParsingTest */ = { + isa = PBXGroup; + children = ( + 26D4399928DC28B300722F7B /* ExpositionDataParsingTest.swift */, + ); + path = ExpositionDataParsingTest; + sourceTree = ""; + }; + AAB2963E28E6ABAE0017ABB7 /* Cell */ = { + isa = PBXGroup; + children = ( + AAB2963F28E6ABE10017ABB7 /* ItemTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; C79FF4A82589F401005FB0FD = { isa = PBXGroup; children = ( C79FF4B32589F401005FB0FD /* Expo1900 */, + 26D4399828DC28B300722F7B /* ExpositionDataParsingTest */, C79FF4B22589F401005FB0FD /* Products */, ); sourceTree = ""; @@ -82,6 +141,7 @@ isa = PBXGroup; children = ( C79FF4B12589F401005FB0FD /* Expo1900.app */, + 26D4399728DC28B300722F7B /* ExpositionDataParsingTest.xctest */, ); name = Products; sourceTree = ""; @@ -89,6 +149,7 @@ C79FF4B32589F401005FB0FD /* Expo1900 */ = { isa = PBXGroup; children = ( + 265AFE6E28E2B56F00D456C5 /* Error */, 268C187A28D988C100981105 /* Model */, 26762AA128DAA84F00D43477 /* View */, 26762AA228DAA85500D43477 /* Controller */, @@ -100,6 +161,24 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 26D4399628DC28B300722F7B /* ExpositionDataParsingTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 26D4399F28DC28B300722F7B /* Build configuration list for PBXNativeTarget "ExpositionDataParsingTest" */; + buildPhases = ( + 26D4399328DC28B300722F7B /* Sources */, + 26D4399428DC28B300722F7B /* Frameworks */, + 26D4399528DC28B300722F7B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 26D4399C28DC28B300722F7B /* PBXTargetDependency */, + ); + name = ExpositionDataParsingTest; + productName = ExpositionDataParsingTest; + productReference = 26D4399728DC28B300722F7B /* ExpositionDataParsingTest.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; C79FF4B02589F401005FB0FD /* Expo1900 */ = { isa = PBXNativeTarget; buildConfigurationList = C79FF4C52589F404005FB0FD /* Build configuration list for PBXNativeTarget "Expo1900" */; @@ -123,9 +202,13 @@ C79FF4A92589F401005FB0FD /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1210; + LastSwiftUpdateCheck = 1400; LastUpgradeCheck = 1210; TargetAttributes = { + 26D4399628DC28B300722F7B = { + CreatedOnToolsVersion = 14.0; + TestTargetID = C79FF4B02589F401005FB0FD; + }; C79FF4B02589F401005FB0FD = { CreatedOnToolsVersion = 12.1; }; @@ -145,11 +228,19 @@ projectRoot = ""; targets = ( C79FF4B02589F401005FB0FD /* Expo1900 */, + 26D4399628DC28B300722F7B /* ExpositionDataParsingTest */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 26D4399528DC28B300722F7B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C79FF4AF2589F401005FB0FD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -163,20 +254,41 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 26D4399328DC28B300722F7B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 26D4399A28DC28B300722F7B /* ExpositionDataParsingTest.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C79FF4AD2589F401005FB0FD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 26762AA028DAA70300D43477 /* Expo.swift in Sources */, - C79FF4B92589F401005FB0FD /* ViewController.swift in Sources */, - 268C187C28D98A6900981105 /* Relic.swift in Sources */, + 26762AA028DAA70300D43477 /* Exposition.swift in Sources */, + C79FF4B92589F401005FB0FD /* ExpositionViewController.swift in Sources */, + AAEB519C28EBF06000CED9EF /* ItemsTableViewController.swift in Sources */, + AAEB51A428ED29F900CED9EF /* ItemInfoViewController.swift in Sources */, + 268C187C28D98A6900981105 /* Item.swift in Sources */, C79FF4B52589F401005FB0FD /* AppDelegate.swift in Sources */, + AAEB51A228EBF83B00CED9EF /* JSONParser.swift in Sources */, + 265AFE7028E2B5B700D456C5 /* Error.swift in Sources */, + AAB2964028E6ABE10017ABB7 /* ItemTableViewCell.swift in Sources */, C79FF4B72589F401005FB0FD /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 26D4399C28DC28B300722F7B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C79FF4B02589F401005FB0FD /* Expo1900 */; + targetProxy = 26D4399B28DC28B300722F7B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ C79FF4BA2589F401005FB0FD /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -197,6 +309,52 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 26D4399D28DC28B300722F7B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = W7588LM9FP; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.Schro.ExpositionDataParsingTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Expo1900.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Expo1900"; + }; + name = Debug; + }; + 26D4399E28DC28B300722F7B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = W7588LM9FP; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MACOSX_DEPLOYMENT_TARGET = 12.3; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.Schro.ExpositionDataParsingTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Expo1900.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Expo1900"; + }; + name = Release; + }; C79FF4C32589F404005FB0FD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -352,6 +510,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 26D4399F28DC28B300722F7B /* Build configuration list for PBXNativeTarget "ExpositionDataParsingTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 26D4399D28DC28B300722F7B /* Debug */, + 26D4399E28DC28B300722F7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; C79FF4AC2589F401005FB0FD /* Build configuration list for PBXProject "Expo1900" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Expo1900/Expo1900/.DS_Store b/Expo1900/Expo1900/.DS_Store index 1db759d..23ede55 100644 Binary files a/Expo1900/Expo1900/.DS_Store and b/Expo1900/Expo1900/.DS_Store differ diff --git a/Expo1900/Expo1900/Controller/Cell/ItemTableViewCell.swift b/Expo1900/Expo1900/Controller/Cell/ItemTableViewCell.swift new file mode 100644 index 0000000..aac4c89 --- /dev/null +++ b/Expo1900/Expo1900/Controller/Cell/ItemTableViewCell.swift @@ -0,0 +1,27 @@ +// +// ItemTableViewCell.swift +// Expo1900 +// +// Created by 박도원 on 2022/09/30. +// + +import UIKit + +class ItemTableViewCell: UITableViewCell { + + @IBOutlet weak var itemImageView: UIImageView! + @IBOutlet weak var itemNameLabel: UILabel! + @IBOutlet weak var shortDescriptionLabel: UILabel! + var itemInfo: Item? + + func setCellData(itemInfo: Item) { + self.itemInfo = itemInfo + if let item = self.itemInfo { + self.itemNameLabel.text = item.name + self.itemImageView.image = UIImage(named: item.image) + self.shortDescriptionLabel.text = item.shortDescription + } + } +} + + diff --git a/Expo1900/Expo1900/Controller/ExpositionViewController.swift b/Expo1900/Expo1900/Controller/ExpositionViewController.swift new file mode 100644 index 0000000..a019053 --- /dev/null +++ b/Expo1900/Expo1900/Controller/ExpositionViewController.swift @@ -0,0 +1,55 @@ +// +// Expo1900 - ViewController.swift +// Created by yagom. +// Copyright © yagom academy. All rights reserved. +// + +import UIKit + +class ExpositionViewController: UIViewController { + @IBOutlet private weak var titleLabel: UILabel! + @IBOutlet private weak var visitorsLabel: UILabel! + @IBOutlet private weak var locationLabel: UILabel! + @IBOutlet private weak var durationLabel: UILabel! + @IBOutlet private weak var descriptionLabel: UILabel! + + + override func viewDidLoad() { + super.viewDidLoad() + + try? setView(from: getExpositionData()) + } + + private func getExpositionData() throws -> Exposition { + guard let expositionData = try? JSONParser().getExpositionData() else { + throw MyError.expositionParsingError + } + + return expositionData + } + + private func setView(from data: Exposition) { + let title = data.title + let visitors: String = "방문객 : " + let location: String = "개최지 : " + let duration: String = "개최 기간 : " + let description = data.description + + titleLabel.text = title + visitorsLabel.text = try? visitors + numberFormatToDecimal(of: data.visitors) + locationLabel.text = location + data.location + durationLabel.text = duration + data.duration + descriptionLabel.text = description + } + + private func numberFormatToDecimal(of number: Int?) throws -> String { + let numberFormatter = NumberFormatter() + numberFormatter.numberStyle = .decimal + + guard let newNumber = number, let result = numberFormatter.string(from: NSNumber(value: newNumber)) else { + throw MyError.decimalConversionError + } + + return result + "명" + } +} diff --git a/Expo1900/Expo1900/Controller/ItemInfoViewController.swift b/Expo1900/Expo1900/Controller/ItemInfoViewController.swift new file mode 100644 index 0000000..8eb30ae --- /dev/null +++ b/Expo1900/Expo1900/Controller/ItemInfoViewController.swift @@ -0,0 +1,28 @@ +// +// ItemInfoViewController.swift +// Expo1900 +// +// Created by 박도원 on 2022/10/05. +// + +import UIKit + +class ItemInfoViewController: UIViewController { + @IBOutlet private weak var itemImageView: UIImageView! + @IBOutlet private weak var itemDescriptionLabel: UILabel! + var itemInfo: Item? + + override func viewDidLoad() { + super.viewDidLoad() + setItemData() + } + + func setItemData() { + guard let data = itemInfo else { + return + } + itemImageView.image = UIImage(named: data.image) + itemDescriptionLabel.text = data.description + } + +} diff --git a/Expo1900/Expo1900/Controller/ItemsTableViewController.swift b/Expo1900/Expo1900/Controller/ItemsTableViewController.swift new file mode 100644 index 0000000..1f62bba --- /dev/null +++ b/Expo1900/Expo1900/Controller/ItemsTableViewController.swift @@ -0,0 +1,55 @@ +// +// ItemsTableViewController.swift +// Expo1900 +// +// Created by 박도원 on 2022/10/04. +// + +import UIKit + +class ItemsTableViewController: UIViewController { + @IBOutlet private weak var itemTableView: UITableView! + private var itemList: [Item] = [] + + override func viewDidLoad() { + super.viewDidLoad() + + try? self.itemList = getItemList() + } + + private func getItemList() throws -> [Item] { + guard let items: [Item] = try? JSONParser().getItemsData() else { + throw MyError.itemParsingError + } + + return items + } +} + +extension ItemsTableViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + let cell = tableView.cellForRow(at: indexPath) as? ItemTableViewCell + let itemInfoVC = "ItemInfoVC" + guard let itemInfoVC = self.storyboard?.instantiateViewController(withIdentifier: itemInfoVC) as? ItemInfoViewController else { + return + } + itemInfoVC.itemInfo = cell?.itemInfo + navigationController?.pushViewController(itemInfoVC, animated: true) + } +} + +extension ItemsTableViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return itemList.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let itemCell = "ItemCell" + guard let cell = tableView.dequeueReusableCell(withIdentifier: itemCell, for: indexPath) as? ItemTableViewCell else { + return UITableViewCell() + } + + cell.setCellData(itemInfo: itemList[indexPath.row]) + return cell + } +} diff --git a/Expo1900/Expo1900/Controller/SecondViewController.swift b/Expo1900/Expo1900/Controller/SecondViewController.swift new file mode 100644 index 0000000..26067d0 --- /dev/null +++ b/Expo1900/Expo1900/Controller/SecondViewController.swift @@ -0,0 +1,29 @@ +// +// SecondViewController.swift +// Expo1900 +// +// Created by 박도원 on 2022/09/29. +// + +import UIKit + +class SecondViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/Expo1900/Expo1900/Controller/ViewController.swift b/Expo1900/Expo1900/Controller/ViewController.swift deleted file mode 100644 index c1fc8d4..0000000 --- a/Expo1900/Expo1900/Controller/ViewController.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// Expo1900 - ViewController.swift -// Created by yagom. -// Copyright © yagom academy. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - -} - diff --git a/Expo1900/Expo1900/Error/Error.swift b/Expo1900/Expo1900/Error/Error.swift new file mode 100644 index 0000000..50db974 --- /dev/null +++ b/Expo1900/Expo1900/Error/Error.swift @@ -0,0 +1,23 @@ +// +// ExpositionError.swift +// Expo1900 +// +// Created by Schro on 2022/09/27. +// + +import Foundation + +enum MyError: Error, LocalizedError { + case expositionParsingError, itemParsingError, decimalConversionError + + var errorDescription: String { + switch self { + case .expositionParsingError: + return "ExpositionParsing 실패" + case .itemParsingError: + return "ItemParsing 실패" + case .decimalConversionError: + return "소수 변환 실패" + } + } +} diff --git a/Expo1900/Expo1900/Model/Expo.swift b/Expo1900/Expo1900/Model/Exposition.swift similarity index 77% rename from Expo1900/Expo1900/Model/Expo.swift rename to Expo1900/Expo1900/Model/Exposition.swift index 5336b4b..94715c5 100644 --- a/Expo1900/Expo1900/Model/Expo.swift +++ b/Expo1900/Expo1900/Model/Exposition.swift @@ -7,11 +7,10 @@ import Foundation -struct Expo: Decodable { +struct Exposition: Decodable { let title: String let visitors: Int - let locations: String + let location: String let duration: String let description: String - } diff --git a/Expo1900/Expo1900/Model/Relic.swift b/Expo1900/Expo1900/Model/Item.swift similarity index 89% rename from Expo1900/Expo1900/Model/Relic.swift rename to Expo1900/Expo1900/Model/Item.swift index 25e82a3..c9d3c49 100644 --- a/Expo1900/Expo1900/Model/Relic.swift +++ b/Expo1900/Expo1900/Model/Item.swift @@ -5,9 +5,9 @@ // Created by Schro on 2022/09/20. // -import UIKit +import Foundation -struct Relic: Decodable { +struct Item: Decodable { let name: String let image: String let shortDescription: String diff --git a/Expo1900/Expo1900/Model/JSONParser.swift b/Expo1900/Expo1900/Model/JSONParser.swift new file mode 100644 index 0000000..e43e5bf --- /dev/null +++ b/Expo1900/Expo1900/Model/JSONParser.swift @@ -0,0 +1,40 @@ +// +// JSONParser.swift +// Expo1900 +// +// Created by 박도원 on 2022/10/04. +// + +import UIKit + +class JSONParser { + enum FileName: String { + case expositionFile = "exposition_universelle_1900" + case itemsFile = "items" + } + + func getExpositionData() throws -> Exposition { + guard let expositionDataAsset = NSDataAsset(name: FileName.expositionFile.rawValue) else { + throw MyError.expositionParsingError + } + let expositionJsonDecoder = JSONDecoder() + + guard let expositionData = try? expositionJsonDecoder.decode(Exposition.self, from: expositionDataAsset.data) else{ + throw MyError.expositionParsingError + } + return expositionData + } + + func getItemsData() throws -> [Item] { + guard let itemDataAsset = NSDataAsset(name: FileName.itemsFile.rawValue) else { + throw MyError.itemParsingError + } + let itemJsonDecoder = JSONDecoder() + + guard let itemData = try? itemJsonDecoder.decode([Item].self, from: itemDataAsset.data) else { + throw MyError.itemParsingError + } + + return itemData + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/Contents.json new file mode 100644 index 0000000..67571f3 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "bangjja~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "bangjja~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "bangjja~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@1x.png new file mode 100644 index 0000000..cf19a20 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@2x.png new file mode 100644 index 0000000..73786e7 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@3x.png new file mode 100644 index 0000000..2fa72b7 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/bangjja.imageset/bangjja~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/Contents.json new file mode 100644 index 0000000..ab11755 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "buddhism~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "buddhism~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "buddhism~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@1x.png new file mode 100644 index 0000000..33a51fe Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@2x.png new file mode 100644 index 0000000..52c392d Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@3x.png new file mode 100644 index 0000000..833501b Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/buddhism.imageset/buddhism~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/Contents.json new file mode 100644 index 0000000..48aea9f --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/Contents.json @@ -0,0 +1,12 @@ +{ + "data" : [ + { + "filename" : "exposition_universelle_1900.json", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/exposition_universelle_1900.json b/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/exposition_universelle_1900.json new file mode 100644 index 0000000..b67989a --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/exposition_universelle_1900.dataset/exposition_universelle_1900.json @@ -0,0 +1,7 @@ +{ + "title":"파리 만국박람회 1900(L'Exposition de Paris 1900)", + "visitors":48130300, + "location":"프랑스 파리", + "duration":"1900. 04. 14 - 1900. 11. 12", + "description":"1900년 파리 만국박람회(지금의 세계 박람회[World’s Fair/Exposition/Expo])는 지난 세기를 기념하고 다음 세기를 향한 발전을 가속하자는 의미에서 1900년 4월 14일부터 11월 12일까지 프랑스 파리에서 열린 세계 박람회였다. 이 박람회에서 널리 선보였던 건축 양식이 바로 '아르누보'였다. 총 관람객수가 5000만 명에 달한 1900년 세계 박람회에서는 수많은 기계와 발명품, 그리고 건축물들이 전시됐는데 그 중에는 그랑드 루 드 파리 대관람차, 마트료시카 인형, 디젤 엔진, 유성영화, 에스컬레이터, 텔레그라폰 (최초의 자석식 녹음기) 등 지금도 널리 알려져 있는 것들도 등장했다.\n\n프랑스는 1855년에도 만국 박람회를 개최한 전력이 있었는데 전쟁 후 국가의 자부심과 신념을 다시 세우고자 하는 욕구로부터 비롯된 것이었다. 1900년 박람회가 성공을 거둔 것도 전후 국가 부흥이라는 똑같은 주제에 따른 것이었다. 1900년 파리 세계 박람회가 개최되기 8년 전인 1892년, 프랑스 정부는 새 세기의 도래를 환영하고 축하하는 박람회를 열 것이라고 발표했다.\n\n프랑스는 전세계 56개국에 초청장을 보냈고, 그 중 40개국이 수락하여 참가했다.참가국들이 이룬 것과 생활양식을 전시했다. 이 세계 박람회는 여러 가지 체험을 종합하여 익히도록 한 것이었다. 이를 통해 외국인들에게 각 국가들 간의 유사성은 물론 그 사이의 독특한 다양성을 깨닫도록 하는 기회를 제공했다. 또 새로운 문화를 경험하고 각국이 전시해 놓은 자국의 가치들을 전반적으로 더욱 이해할 수 있도록 했다. 이러한 상호 이해의 환경이 전쟁 시대 이후 필요하다고 여겨졌던 문화적 관용을 늘리는데 한몫하도록 했다. 박람회 개최 소식이 발표되자 독일에서 처음으로 열린 국제 박람회에 쏠렸던 관심은 풀리고 박람회 개최에 대한 호응이 어마어마하게 쏟아졌다. 박람회에 대한 지지도 대단해서 각국에서는 즉시 자국 전시관 계획을 세우기 시작했다. \n\n파리 만국박람회가 개최된 1900년 4월 14일부터 11월 12일까지 프랑스 파리에는 대한제국의 문화와 문물이 전시된 한국관이 세워졌습니다. 한국관은 경복궁의 근정전을 재현한 주전시관과 옛 국왕들의 위패를 모셔놓은 사당을 별채로 구성되었는데, 이는 우리 건축의 아름다움을 세계에 알린 첫 건축물이 되었습니다. 특히 만국박 람회의 대한제국관을 묘사한 프랑스 잡지 ‘르 프티 주르날(Le Petit Journal)’은 태극기를 표시해 당당하게 대한 제국의 상징으로 많은 관심을 받을 수 있었습니다.\n\n한국관의 전시품은 정확하게 어떤 것이 전시되었는지 알 수는 없지만 대한제국과 프랑스 정부간에 오고 간 문 서를 통해 짐작할 수 있습니다. 대한제국 정부는 우리의 다양한 전통문화를 나타내는 비단, 놋그릇, 도자기, 칠 보 등의 공예품을 제공한 것으로 보이며, 이 밖에도 악기, 옷, 가구, 예술품 등도 있었다고 합니다. 만국박람회는 참가한 나라들의 산업을 소개하는 역할을 했고, 전시는 물론 시상도 했는데 대한제국은 식물성 농업식품 분야 에서 그랑프리(대상)을 수상하였다고 합니다.\n\n1900년 11월 12일 파리 만국박람회가 폐막된 후 한국관에 출품되었던 전시품들은 다시 본국으로 돌아오지 못하고 대부분 현지에 기증되었는데, 이는 일종의 관례이기도 했지만 본국으로 회수하는데 드는 과도한 운송비용 때문이기도 했습니다.\n\n현재 이 전시품들은 프랑스에 있는 국립공예박물관, 국립예술직업전문학교, 국립음악원 음악박물관, 국립 기메 아시아박물관 등에 소장되어있습니다. 특히 전시품으로 기증된 악기들 중 해금은 현존하는 해금 가운데 가장 오래된 것으로 추정되고 있다고도 합니다. 우리의 소중한 역사적 유물을 멀리 두고 올 수 밖에 없던 상황이 안타깝게 느껴집니다.\n\n작고 힘없는 나라 대한제국이 세계 강국들이 모인 만국박람회에 참가한다는 자체가 불가능하다는 의견이 지배 적이었지만 1900년 프랑스 파리에 근정전을 본뜬 한국관이 우뚝 세워졌습니다. 그 존재만으로 독립된 나라임을 세계에 알리고자 했던 목표는 이루어진 것 같습니다. 그러나 안타깝게도 그로부터 5년 후인 1905년 을사늑약이 체결되었고, 대한제국은 독립국가로서 세계에서 점점 잊혀져 갔습니다." +} \ No newline at end of file diff --git a/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/Contents.json new file mode 100644 index 0000000..663e6cf --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "flag~universal.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/flag~universal.pdf b/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/flag~universal.pdf new file mode 100644 index 0000000..1be9f9a Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/flag.imageset/flag~universal.pdf differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/Contents.json new file mode 100644 index 0000000..c92457e --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "folds~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "folds~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "folds~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@1x.png new file mode 100644 index 0000000..a4041a3 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@2x.png new file mode 100644 index 0000000..db019af Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@3x.png new file mode 100644 index 0000000..cba65b1 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/folds.imageset/folds~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/Contents.json new file mode 100644 index 0000000..0183082 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "gayageum~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gayageum~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gayageum~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@1x.png new file mode 100644 index 0000000..98011a3 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@2x.png new file mode 100644 index 0000000..d1d7ca6 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@3x.png new file mode 100644 index 0000000..7eab259 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/gayageum.imageset/gayageum~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/Contents.json new file mode 100644 index 0000000..1d3b4fe --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "geomungo~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "geomungo~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "geomungo~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@1x.png new file mode 100644 index 0000000..56da34e Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@2x.png new file mode 100644 index 0000000..352d705 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@3x.png new file mode 100644 index 0000000..7a601c0 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/geomungo.imageset/geomungo~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/Contents.json new file mode 100644 index 0000000..f7029a5 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "god~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "god~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "god~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@1x.png new file mode 100644 index 0000000..3aea0bd Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@2x.png new file mode 100644 index 0000000..e81b405 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@3x.png new file mode 100644 index 0000000..24a9292 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/god.imageset/god~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/Contents.json new file mode 100644 index 0000000..1a66978 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "haegeum~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "haegeum~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "haegeum~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@1x.png new file mode 100644 index 0000000..a88e2f9 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@2x.png new file mode 100644 index 0000000..2ae85a9 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@3x.png new file mode 100644 index 0000000..b58dc27 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/haegeum.imageset/haegeum~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/Contents.json new file mode 100644 index 0000000..d3f1394 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/Contents.json @@ -0,0 +1,12 @@ +{ + "data" : [ + { + "filename" : "items.json", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/items.json b/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/items.json new file mode 100644 index 0000000..7f9b752 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/items.dataset/items.json @@ -0,0 +1,80 @@ +[ + { + "name":"직지심체요절", + "image_name":"jikji", + "short_desc":"백운화상 경한(景閑)이 1372년에 초록한 불교 서적", + "desc":"《'백운화상초록불조직지심체요절》(白雲和尙抄錄佛祖直指心體要節)은 백운화상 경한(景閑)이 1372년에 초록한 불교 서적이다. 간단히 직지심체요절(直指心體要節) 또는 직지(直指, JUKJI)라고 부르기도 한다.\n\n1372년(공민왕 21)에 백운화상 경한이 임제종 18대 법손 석옥청공(石屋淸珙) 화상(和尙)으로부터 받아 온 《불조직지심체요절》을 증보하여 상·하 2권으로 엮은 것이다. 백운화상이 입적하고 3년 뒤인 1377년에 청주 흥덕사(興德寺)에서 금속활자로 찍어 낸 것이 초인본(初印本)이다. 이는 현존하는 금속활자로 인쇄된 책 중 가장 오래된 것이다. 금속활자본은 현재 하권만이 전해지고, 프랑스 국립도서관에 소장되어 있다. 고간본(古刊本)으로는 1378년 백운화상이 입적한 여주 취암사(鷲巖寺)에서 간행한 목판본이 있다. 목판본은 1992년 4월 20일 보물 제1132호로 지정되었고, 현재 한국학중앙연구원 장서각과 국립중앙도서관에 상하권 1책이 각각 소장되어 있다.\n\n중심 주제인 직지심체(直指心體)는 ‘직지인심견성성불(直指人心見性成佛)’이라는 오도(悟道)의 명구에서 따온 것이다. 그 뜻은 사람이 마음을 바르게 가졌을 때 그 심성이 곧 부처의 마음임을 깨닫게 된다는 뜻이다. 사람의 본성은 그 자체가 본시 청정하므로 선지식(善知識)의 도움에 의하여 자기 마음 속에서 그 심성이 자정(自淨)함을 깨닫고 늘 자수(自修)·자행(自行)하면 곧 불성(佛性)을 체득하여 자기 자신이 바로 법신(法身)이 되며, 자기 마음이 바로 불심이 된다는 요지이다.\n\n정식 명칭은 ‘백운화상초록불조직지심체요절’(白雲和尙抄錄佛祖直指心體要節)이며, 간략 서명은 ‘불조직지심체’(佛祖直指心體)이다. 판심제(版心題)는 직지(直指) 또는 심요(心要)이다. 간단히 '직지심체요절(直指心體要節)', '직지(直指)'로 불리며, 영어권에도 'Jikji'로 통용된다.\n\n흔히 직지심경(直指心經)으로도 불리는데, 불서(佛書) 중 직지는 경(經)이 아니라 요절(要節)이기 때문에 이는 잘못된 표현이다." + }, + { + "name":"불경", + "image_name":"buddhism", + "short_desc":"석가모니와 그 제자들의 가르침을 모아놓은, 불교의 경전", + "desc":"불경(佛經, 영어: Buddhist texts)은 석가모니와 그 제자들의 가르침을 모아놓은, 불교의 경전이다.\n\n중복되는 예도 많고 인도, 중국, 티베트, 한국을 거치면서 같은 경전이 여러가지 이름으로 불리기도 한다. 불교의 경전은 1차 결집은 석가모니의 말을 제자들이 다시 암송하는 것이었다. 즉 현재처럼 책으로 만들어진 것이 아니라, 같이 암송하여 석가모니의 말임을 확인하는 것이 결집이었다. 그 후 3차 결집에서는 패엽에 기록하였고 이후 경, 논, 율 의 3장 삼장으로 분류하여 각국에서 대장경을 결집하였다.\n\n현재 일본의 신수대장경이 가장 체계적인 정리이므로 불교 연구에서 대장경의 표준이다. 대한민국 해인사의 팔만대장경도 2004년 현재 전산화가 완료되었다.\n\n불교 경전은 상좌부 불교 계통인 아함경 등 상좌부 경전 / 대승불교의 대승경전 / 티베트 불교, 즉 밀교의 금강승 계통의 경전으로 나눌 수 있다. 밀교는 일반적으로 대승에 속한다." + }, + { + "name":"팔만대장경", + "image_name":"palman", + "short_desc":"고려가 몽골의 침입을 불력(佛力)으로 막아내고자 1236년(고종 23년) 강화군에서 조판에 착수하여 15년이 지난 1251년(고종 38년)까지 총 16년에 걸쳐 완성한 고려의 대장경", + "desc":"합천 해인사 대장경판(陜川 海印寺 大藏經板) 또는 팔만대장경(八萬大藏經), 고려대장경(高麗大藏經, Tripitaka Koreana 트리피타카 코레아나)은 경상남도 합천군 해인사에 있는, 고려가 몽골의 침입을 불력(佛力)으로 막아내고자 1236년(고종 23년) 강화군에서 조판에 착수하여 15년이 지난 1251년(고종 38년)까지 총 16년에 걸쳐 완성한 고려의 대장경이다. 1962년 12월 20일에 대한민국의 국보 제32호 해인사대장경판(海印寺大藏經板)으로 지정되었다가, 2010년 8월 25일 현재의 명칭으로 변경되었다.\n\n현존하는 세계의 대장경 가운데 가장 오래된 것일 뿐만 아니라 체재와 내용도 가장 완벽한 것으로 평가되고 있는 팔만대장경은 2007년도에 세계기록유산으로 지정되었다.\n\n불교를 숭상한 고려는 외침(外侵, 외세의 침략)을 부처의 힘으로 막고자 방대한 대장경의 간행사업을 추진했다.\n\n제1차는 거란의 침입으로 곤경에 직면했을 때 불력으로 물리치고자 대구 팔공산 부인사(符仁寺)에 도감(都監)을 두고, 《대반야경(大般若經)》·《화엄경(華嚴經)》·《금광명경(金光明經)》·《묘법연화경(妙法蓮華經)》 등 6,000여 권을 조조(彫造)하였다. 현종 때 시작하여 문종 때 완성된 이 초판 고본(古本) 대장경은 고종 19년(1232)의 몽골 침입 때 불타고, 일부가 일본에 전해진다.\n\n그 후 대각국사 의천이 흥왕사(興王寺)에 교장도감(敎藏都監)을 설치하고, 송에서 가져온 불경과 요(遼) · 일본에서 수집한 불경의 총목록을 작성하고, 이에 따라 차례로 만들었다. 이것이 이른바 속대장경(續大藏經)으로 1,010부(部) 4,740여 권에 달하였으나, 몽골의 병화로 거의 없어지고 일부가 전해지고 있다.\n\n그 후 강화도에서 몽골의 침입을 막아보고자 대대적인 조판 사업이 진행되었다. 고종 23년(1236) 강화도에 장경도감(藏經都監)을 설치하여 사업에 착수, 고종 38년(1251) 총 81,137매(枚)의 대장경을 완성하였는데, 이것이 유명한 팔만대장경(八萬大藏經)으로 합천 해인사에 보관되어 있다. 대장경의 조판으로 인쇄술의 발달과 출판 기술에 큰 공헌을 하였다. 현재 보존되어 있는 대장경판은 조선 시대에 다시 새긴 것(보유판)과 일제 강점기 때 다시 새긴 것까지 합하여 총 81,352판(板)이나 된다." + }, + { + "name":"삼국사기", + "image_name":"samguk", + "short_desc":"인종의 명을 받아 김부식(金富軾)등이 1145년(인종 23년) 완성한 삼국시대사", + "desc":"《삼국사기》(三國史記)는 삼국사(三國史)라 하기도 하며, 인종의 명을 받아 김부식(金富軾)등이 1145년(인종 23년) 완성한 삼국시대사이다. 대한민국에서 현존하는 가장 오래된 역사서로서, 삼국시대의 각국의 흥망과 변천을 기술한 정사체의 역사서이다.\n\n1970년 옥산서원에서 소장하고 있는 판본이 대한민국의 보물 제525호로 지정되었다가 대한민국의 국보 제322-1호로 승격되었다. 그밖에 1981년 조병순 소장 영본(零本)과 경주부간본(慶州府刊本)이 각각 보물 제722호, 723호로 지정되었다가 경주부간본이 국보 제322-2호로 승격되었다. 국보 제322-1호, 322-2호가 유일한 완본으로 현전하며, 보물 제722호는 7권 1책이 전해진다.\n\n편찬시기는 고려 왕조가 이자겸의 난과 묘청의 난 등 귀족 사회의 동요를 수습하고 난 뒤, 전 왕조의 역사를 공식으로 정리한 정사(正史)로서 기전체의 형식으로 편찬되었다. 글의 내용은 고기(古記) · 유적(遺蹟) 혹은 중국의 여러 사서에서 뽑아 편찬하고 간행하였다.\n\n 《삼국사기》를 편찬하기 시작한 정확한 시기는 알려져 있지 않다. 김부식이 묘청의 난을 진압하고 난 후에 임명된 벼슬에 감수국사(監脩國史)가 있어 이 무렵부터 편찬되기 시작했다고 보는 설이 있고, 김부식이 정계에서 은퇴한 1142년에 시작했다고 보는 설이 있다. 《삼국사기》가 완성된 시기는 1145년(인종 23년)이다. 1174년에 송나라에 진상되기도 했다.\n\n《삼국사기》 편찬에 참여한 편수관(編修官)은 총 11명으로 감수국사 김부식을 필두로 참고(參考) 8명(최산보, 이온문, 허홍재, 서안정, 박동계, 이황중, 최우보, 김영온)과 관구(管句) 2명(김충효, 정습명)이다. 김부식이 편찬의 주역으로 머리말, 논찬, 사료의 선택, 인물의 평가 등을 직접 하였을 것으로 보인다. 그 외의 실질적인 편찬 작업은 10명의 편수관이 수행했다. 10명의 편수관들 가운데 상당수는 대간(臺諫) 출신들이 많고, 김부식도 대간 계통의 관직을 두루 역임하였다. 이는 《삼국사기》가 비판적 성격을 가질 수 있었던 토대로 여겨진다." + }, + { + "name":"해금", + "image_name":"haegeum", + "short_desc":"두 줄로 된 한국의 전통 찰현악기", + "desc":"해금은 동호계 민족인 해(奚)족이 사용한 악기라 하여 해금이라고 한다. 이 악기는 중국에 유입되어 경극 반주에 쓰는 악기인 경호(京胡)로 사용되었다. 이후 한 옥타브가 낮은 음역대로 개량되면서 호금의 일종인 얼후(이호/二胡/南胡)라는 명칭으로 사용된다. 고려 예종 11년(1116년)으로 송나라에서 들어와 개량되어 해금이라는 이름으로 사용되었으며 원형과 가장 비슷한 악기로 알려져 있다. 명주실을 꼬아 만든 두 가닥의 줄의 한쪽 끝에 공명통이 있어서 활로 줄을 마찰할 때 울리는 소리가 난다. 속된 말로 '깽깽이'라 이르기도 한다. 향악 연주에 주로 쓰인다." + }, + { + "name":"용고", + "image_name":"ywoonggo", + "short_desc":"타악기인 북의 하나", + "desc":"북통 양면에 두개의 고리가 있어 대취타(大吹打) 등 행악(行樂) 때 무명천으로 질빵을 삼아 목부터 아랫배까지 늘여 매고 양손에 두개의 북채를 쥐고 위에서 내리쳐서 연주한다. 북가죽의 지름 42.4㎝, 북통의 높이 21.2㎝, 북통의 둘레 46.96㎝이다.\n\n용고의 제도는 교방고(敎坊鼓)와 거의 같으나 그보다 작고, 다만 북통에 하늘에 오르려고 서리고 있는 용[蟠龍]을 그린 것이 흡사하다. 용고를 치는 법은 초립을 쓰고 노랑괘자[黃掛子]를 입고 남띠[藍絲帶]를 띠고 행전에 미투리를 신고 손에는 짧은 흰 한삼(汗衫)을 끼고 양손에 든 두개의 북채로 박절(拍節)에 맞추어 내리친다.\n\n한편, 민속악 중 판소리의 장단을 치는 북이 있는데, 북통에 반룡만 그리지 않았을 뿐 체재와 규격은 용고와 거의 같다. 그리고 판소리에 사용되는 북은 그 이름도 용고라고 하지 않고 소리북으로 통칭하고 있다. 소리북은 북을 앞에 놓고 앉아서 치는 것이 용고와 다르다." + }, + { + "name":"놋그릇", + "image_name":"bangjja", + "short_desc":"놋그릇 또는 유기(鍮器)는 놋쇠로 만드는 그릇", + "desc":"대한민국의 청동기 문화는 시베리아의 ‘미누신스크-스키타이’청동기 문화와 관련이 있는 북방계의 ‘오르도스-요령지방’청동기 문화의 영향을 받았던 것으로 보인다. 청동기 시대 초기에는 비파형동검과 조문경을 제작하였고, 후기가 되면 세형청동검을 독자적으로 주조하여 전성기를 이루었으며, 다뉴세문경, 방울, 의식구를 비롯한 각종의 도구를 제작하였다.\n\n고려시대에는 빛깔이 고운 ‘고려동’을 생산하여 중국과 교역을 하였다. 왕족과 귀족은 방자기법으로 제작한 얇고 질긴 청동그릇을 식기로 사용하기도 하였다.\n\n조선시대에는 초기부터 국가에서 채굴에 힘을 썼으며, 경국대전에 의하면 국가에서 쓰는 유기를 만드는 유장(鍮匠)을 중앙 장인인 경공장(京工匠)으로 공조(工曹)에 8명, 상의원(尙衣院)에 4명을 두었고, 지방 관아에 필요한 유기를 만드는 외공장(外工匠)도 상당수 배치하였다는 기록이 있다. 조선시대는 숭유억불정책의 영향으로 불교적 색채를 띠는 금공품이 많지 않았던 반면 담배함, 화로, 향로, 반상기 등 단순하면서도 소박한 느낌을 주는 형태의 생활용품과 민예품이 많이 제작되었다. 자기를 대중적인 식기로 쓰던 시대였음에도 유기는 고려시대에 이어 상류층에서 식기로 사용하였으며, 중산층 이상의 가정에서도 생활 용구로 사용되어 전국 각지에서 생산되고 시장을 형성하였다.\n\n근대 말에는 일본에 의한 유기 공출이라는 명목으로 각 가정에서 소유한 거의 모든 유기들을 수탈당하였다. 그 후 1945년 해방과 더불어 유기는 다시 성행하기 시작하였으나 6·25 전쟁 이후 연탄을 사용하면서부터 연탄가스에 변색되기 쉬운 놋그릇 대신 스테인리스 그릇을 선호하여 유기는 점차 사라졌다.\n\n최근 각종 실험을 통해 병원균, O-157 살균기능, 농약성분 검출기능 등이 밝혀지면서 부각되고 있다. 또한 열보존률은 사기그릇, 스테인리스, 방짜유기 중 방짜유기가 가장 높은 것으로 나타났다. 현재 악기, 제기, 식기 및 각종 생활용품 등으로 제작되고 있다.\n\n방짜유기는 음식을 담는 식기류에 쓰인다. 구리와 주석의 합금액을 불에 달구어 망치로 여러 차례 두들겨서 만든다. 이때 주석의 비율이 일반 청동 그릇에 비해 훨씬 높다.\n\n여러 사람이 한 조를 이루어 조직적으로 제조해야 하므로, 만드는 과정이 복잡하고 고도의 숙련 기술이 요구된다. 경기도 안성시가 전통적으로 유기 제조로 유명했다. '안성맞춤'이라는 표현도 안성의 유기에서 나온 것이다.\n\n1945년 경 안성 일대에만 공방이 20여 개 있었을 정도로 성황이었으나, 연탄이 보급되면서 변색이 잘 되고 닦기도 번거로운 유기는 사양길에 접어들었다. 대한민국에서는 유기 제조 기술 보유자를 국가무형문화재로 지정하여 공예문화 보존을 노력하고 있다." + }, + { + "name":"나막신", + "image_name":"woodshoes", + "short_desc":"나무를 파서 만든 신", + "desc":"격지·목극(木屐)·각색(脚濇)·목리(木履)·목혜(木鞋) 등으로 불리다가 조선 말기에 나막신으로 통칭되었는데, 이는 ‘나무신’이 와전된 것이다. 지방에 따라 나막개·나모께·나무신·목신·남신·나막개짝·토막신·껏두기·미엉·남박신·나묵신·나묵개·나맥신·나목신·나목개 등 다양하게 불린다. 나막신은 주로 비올 때 신는 신발로서 자연발생적인 것으로 볼 수 있다.\n\n그러나 고대에도 있었는지는 확증할 문헌이나 유물이 없고, 조선 중기 이후에 많은 기록과 유물을 볼 수 있다. 나막신이 처음 나타났을 때의 형태를 알 수는 없으나 처음에는 평판(平板)에 끈을 하였던 것이 차츰 사방에 울을 하게 되고, 굽을 달아 극(屐)의 형식으로 발달하여 요즈음 볼 수 있는 나막신으로 변하였다. 이와 같이 평극에 울과 굽을 다는 형식으로 된 것은 비올 때에 발에 물이나 진흙이 튀어 들어가는 불편을 막기 위한 것이라고 생각된다.\n\n나막신의 형태를 보면 평극, 굽이 있는 것, 굽이 없는 것, 굽에 징이 박힌 것 등이 있었다. 조선 후기에는 남자아이가 신는 무늬 있는 것[彩屐]등이 있었고, 평극은 보이지 않는다. 재료는 다양하게 사용되었는데 특히 오동나무와 버드나무로 만든 것을 제일로 쳤다. 나무의 속성이 마르면 터지기 쉬우므로, 밀납을 녹여 겉에다 칠해서 납극(蠟屐)을 만들어 신기도 하였다.\n\n나막신은 상하, 남녀노소를 막론하고 모두 신었는데 굽이 높아서 비나 눈이 올 때는 좋으나, 무겁고 활동적이 못 되어 말을 탈 때나 먼길을 갈 때는 신지 않았다. 맑은 날에도 많이 신었으며, 특히 어린 남자아이가 신었던 채극은 진신으로서뿐만 아니라 마른신으로도 신었다. 『오주연문장전산고』에는 나막신을 신고 소리내어 지나가는 것이 오만하다고 하여, 천인이나 젊은이는 양반이나 어른 앞에서는 감히 착용할 수 없었다고 기록되어 있다.\n\n한말에는 청빈한 선비의 신처럼 여겨졌는데, 양반은 가난하더라도 상민처럼 짚신이나 미투리 같은 것은 절대로 신지 않았으므로 맑은 날에도 나막신을 신고 다녔다. 가난한 선비가 많이 살았던 것으로 이름난 남산골의 선비들이 그러하였다 하여 이들을 ‘남산골 딸깍발이’라고 불렀다고 한다. 이렇듯 널리 신겨지다가 1910년 이후 고무신이 등장하자, 많은 사람들이 편리하고 질긴 고무신을 신게 되어 차츰 쇠퇴하여, 1940년대를 전후하여서는 거의 사라지게 되었다." + }, + { + "name":"나전칠기", + "image_name":"najeon", + "short_desc":"목기(木器)의 바탕을 소재로 나전을 가공하고 부착하여 칠을 한 공예품", + "desc":"나전칠기(螺鈿漆器)란 목기(木器)의 바탕을 소재로 나전을 가공하고 부착하여 칠을 한 공예품을 말한다. 고유어로는 자개박이라고도 하며, 널리 대모(玳瑁), 호박, 상아, 보석등의 소재로 이용하는 것도 포함한다.\n\n나전기법은 중국 당나라 때에 성행하였으며 그것이 한국과 일본에 전하여졌을 것으로 보인다. 그 전래의 초기에는 주로 백색의 야광패(夜光貝)를 사용하였으나 후대 특히 한국에서는 청록빛깔을 띤 복잡한 색상의 전복껍데기를 많이 사용하게 되었다. 한국의 고려시대에는 칠기가 송으로 수출되었을 정도로 유명했으며, 관련 일화가 고려도경에도 남아있다. 고려 원종시기 원의 칸의 칠기 조달 명령을 받아 칠기제작 부서인 전함조성도감을 설치했던 바가 있다.\n\n나전칠기장인이란 조개·소라·전복 등의 껍질로 기물(器物)의 면과 가구의 면을 칠과 함께 장식하여 완성한 나전칠기 기능이 뛰어난 사람을 말한다. 곧 나전칠기는 옻칠한 농짝이나 나무 그릇 등에 진주빛이 나는 자개조각을 여러 가지 모양으로 박아 붙여서 장식한 공예품이다." + }, + { + "name":"병풍", + "image_name":"folds", + "short_desc":"그림과 글씨 등을 나무틀로 짠 판에 붙여 세울 수 있게 만든 장황 형식의 물건", + "desc":"병풍은 그림이나 글씨를 배접하여 나무틀에 밑종이를 여러 겹 붙여 만든 판에 다시 붙이고 판들을 연결하여 세울 수 있게 만든 장황 형태이다. 판의 수에 따라 하나의 판으로 구성된 것을 통병풍, 2개의 판을 연결하여 만든 것을 가리개 또는 경병풍(硬屛風)이라고 하고, 2개 이상의 판을 종이띠로 연결하여 만든 것을 연결 병풍, 연병풍(連屛風)이라고 한다.\n\n병풍은 오랜 역사와 전통을 가지고 있는 장황 형식 중 하나이다. 병풍의 초기 형태는 중국 주나라의 천자가 높이 8척의 판에 자루가 없는 여러 개의 도끼를 도안식으로 그리거나 수놓아 뒷벽을 장식하였다는 부의(斧扆)에서 비롯된 것으로 보고 있다. 병풍의 초기 형태를 보여 주는 유물로 중국 후난 성[湖南省] 창사[長沙]박물관에 소장되어 있는 마왕퇴 1호분 출토 「칠병풍(漆屛風)」이 있다. 이 작품은 하나의 넓은 판 위에 천마(天馬)를 그려 놓은 것으로, 부의와 같은 통병풍 형태이다. 우리나라에서도 통병풍 형태의 병풍을 조선시대에도 사용하였으며, 『국조오례의』 「도식(圖式)」에서 그 형태를 확인할 수 있다. 또 1901년 『영정모사도감의궤(影幀模寫都監儀軌)』의 「도설」에 묘사된 ‘오봉병(五峯屛)’ 중 통병풍 형태로 만들어 사용하였던 것으로 추정되는 그림이 남아 있다.\n\n병풍(屛風)의 ‘병(屛)’자는 ‘시(尸)’와 두 손을 나타내는 ‘병(幷)’이 결합된 문자이며 ‘시’자는 시신을 뜻하는데 고대에는 우상의 뜻으로도 해석되었다. 그 뜻은 ‘은폐하다’ ‘앞을 가리다’ ‘울타리 치다’ ‘겁내게 하다’ ‘물리치다’로 해석할 수 있다. 『논어』에서도 ‘시’자를 예배의 대상으로 인식하고 있으며, ‘병(屛)’자는 제사상이 병풍 앞에 차려지고 그 앞에 사람들이 도열해 있는 모습이라고 할 수 있다.\n\n병풍의 형식은 크게 두 종류로 나누어 볼 수 있다. 한대(漢代)의 부의 형식에서 유래된 통병풍과 2폭 이상이 연결되는 연병풍 형식이다. 제작 방식은 기본적으로 나무로 골조를 만들고 그 위에 종이를 발라 서화를 붙일 틀을 만든다. 연병풍의 경우 이러한 틀을 2~12개까지 연결할 수 있으며, 우리나라에서 볼 수 있는 병풍의 연결 방식은 종이나 천을 각 폭의 가장자리에 엇갈리게 붙여 연결하는 방법으로 ‘돌쩌귀식’ 또는 ‘종이날개식’이라고 한다. 일본의 야마모토 모토 [山本元]는 1924년 저술한 『표구 입문(表具の栞)』에서 이러한 방법은 한국에서 자체적으로 발생된 것이라고 서술한 바 있다. 현재에는 일본이나 중국에서도 이러한 방법으로 병풍이 제작되고 있다. 틀을 연결한 후에는 앞면에 작품과 장식 비단을 붙이고 뒷면은 두꺼운 종이나 천, 필요에 따라 표제(表題)를 붙여 마무리하는 것이 일반적이다. 한국 병풍에서 볼 수 있는 또 하나의 구조적 특징은 병풍의 밑부분에 만든 짧은 다리이다. 다리를 만드는 이유는 우리나라의 특징적인 가옥 구조, 즉 온돌이라는 방의 구조 때문이라는 설이 있다. 병풍은 공간을 분할하고, 찬바람을 막아 주며, 벽면을 장식하는 등 가구와 같은 역할을 하는데, 방의 온도가 높아져도 나무로 만든 병풍의 기본 틀이 뒤틀리지 않도록 바닥에서 약간 공간을 띄울 수 있는 다리를 고안하였다는 것이다. 이는 일반 목가구에서 볼 수 있는 다리의 역할과 같다. 또 다른 이유로 병풍이 야외에서도 많이 사용되었기 때문에 오염을 막기 위하여 다리를 만들었다는 설도 있다.\n\n현전하는 병풍의 형식 중 가장 고식(古式)을 보여 주는 예로 16세기에 제작된 「소상팔경도팔곡병(瀟湘八景圖八曲屛)」이 있다. 이것은 조선 중기에 유행하던 소상팔경을 주제로 8폭 형식으로 제작된 병풍으로, 16세기 산수화 병풍의 장황 형태를 보여 주는 중요한 작품이다. 현재 일본 다이간지[大願寺]에 소장되어 있으며, 다이간지의 승려였던 손카이[尊海]가 조선에 왔다가 1539년 일본으로 돌아갈 때 가지고 간 작품이다. 병풍 뒷면에 손카이가 써 놓은기록을 통해 병풍의 제작 시기와 전래 내력에 대하여 구체적으로 확인할 수 있다. 병풍의 높이는 1m 정도로, 작품의 사방으로 붉은색·흰색·쪽색의 얇은 띠를 둘러 장식하였으며, 각 폭마다 2개씩 모두 16개의 짧은 다리가 있는 것이 특징이다. 작품의 주변을 2㎝ 정도의 띠로 둘러 주었다. 작품을 감싸는 듯한 띠는 보통 감색 또는 쪽색 비단이나 종이로 꾸며 주는데 이러한 쪽색은 병풍은 물론, 족자 등의 장황 재료로 가장 쉽게 볼 수 있는 색상이다. 감색은 쪽을 발효시켜 얻는 색인데, 쪽은 색이 쉽게 변하지 않으며, 충해도 예방할 수 있는 장점이 있다." + }, + { + "name":"갓", + "image_name":"god", + "short_desc":"조선시대 성인 남자가 머리에 쓰던 관모(冠帽)", + "desc":"갓은 조선 시대 복식의 갓의 차양에 해당하는 둥글고 넓적한 부분으로 실낱처럼 가늘게 떠낸 대올을 엮어 만든다. 귀천에 따라서 갓양테의 넓이가 달랐다. 갓의 둥그스런 모양은 원형의 대나무 틀에 의하여 만들어진다.\n\n19세기에는 중인이상과 기혼자만이 갓을 쓸 수 있었으며, 상투를 보호하는 모자이다. 갓은 매우 손상되기 쉬운 모자로서, 외부충격에 쉽게 모양이 상한다. 이 때문에 갓을 쓴 사람은 갓이 손상되지 않게 유념해야 한다. 영·정조 때의 갓은 그 시대의 풍속도에서 볼 수 있는 바와 같이, 양태가 비교적 넓었다. 거기에 밀화나 호박·대모 등으로 만든 갓끈을 가슴 밑으로 길게 늘어뜨려 그 멋을 한층 더하였다. 순조 말기에는 양태가 더욱 넓어져서 종전의 어깨를 덮을 정도에서 앉은 사람을 완전히 덮을 정도가 되었는데, 흥선대원군 집정 이후 사회개혁의 일환으로 갓의 폭이 좁아지기도 하였다.\n\n조선은 모자의 나라이고, 늘 자신을 가다듬으려 했던 선비의 정신이다. 갓의 본래 이름은 ‘흑립(黑笠·검은 갓)’이다. 옻칠을 했다는 뜻에서 ‘칠립(漆笠)’이라 부르기도 한다. 양반들이 주로 외출용으로 썼는데, 사대부들이 가장 아끼고 사랑하던 모자이며, 조선시대 사대부가 사람을 대할 땐 반드시 갓을 써야 하였다. 그밖에 백정이 쓰던 평량갓과 서자가 쓰던 서자갓이 있었다." + }, + { + "name":"가야금", + "image_name":"gayageum", + "short_desc":"우리나라 고유의 대표적인 현악기", + "desc":"가야금(伽倻琴)은 한국의 전통 현악기로 거문고와 비슷하나 다른 말로 가얏고라고도 한다. 증보문헌비고에 의한 악기 분류 중 사부(絲部)에 속한다. 오동나무 통에 명주실로 된 열두 줄을 매어 손가락으로 뜯는 악기이다.하지만 개량 가야금에서는 18현,25현,24현등 줄의 개수를 늘려 사용하기도 한다. 줄풍류를 비롯하여 가곡반주·가야금산조·가야금병창 등에서 연주된다.\n\n가야금은 동아시아 전역에 널리 퍼져 있는 롱 지터(long zither)류의 전통악기 중 하나이다. 중국의 정(쟁筝), 일본의 고토(琴), 베트남의 단트란(檀筝), 몽골의 야탁(yatag) 등이 여기에 해당한다.\n\n거문고의 소리가 꿋꿋하고 아정한 데 비하여 가야금 소리는 부드럽고 감정적이며 아름답다. 한국인에게 가장 많이 사랑받는 악기 중의 하나이다.\n\n삼국사기에는 가야의 가실왕(嘉實王)의 명령을 받아 우륵이 만들었다는 기록이 있다.\n\n가야 가실왕 때에 중국 악기를 보고 만들었다고 전하지만 그 이전 변한·진한·신라에 가야금과 비슷한 악기가 있었다는 기록이 있는 것으로 미루어 '고'라는 이름을 가진 악기가 가야금 원형으로 고대 한국에 있었다는 학설이 있다. 가실왕은 이 '고'라는 악기에 중국의 쟁(箏)을 본떠서 개작한 것이라고 추측하기도 한다. 가실왕은 우륵(于勒)에게 명하여 하가라도·상가라도·보기·달기·사물·물혜·하기물·사자기·거열·사팔혜·이사·상기물 12곡을 짓게 했다. 가야국이 어지러워지자 우륵은 신라에 건너가 진흥왕의 명을 받아 계고(階古)·법지(法知)·만덕(萬德)에게 전수하였는데 제자들은 12곡에서 아정한 5곡으로 줄였다.\n\n일부 학자들은 고고학적 증거를 바탕으로 가야금의 등장을 3세기나 기원전 1세기까지 추정하기도 한다.\n\n가야금에는 고형(古形)을 지닌 풍류(風流)가야금과 개조된 형태를 지닌 산조(散調)가야금이 있다.\n\n전통 가야금은 정악가야금(법금, 풍류가야금)과 산조가야금이라는 12현이지만, 최근 들어 15현, 17/18현, 21/22현, 25현의 개량 가야금도 쓰이고 있다. 모든 줄이 안족(기러기발)에 얹혀 있어 음의 높낮이를 조절할 수 있다. 가야금의 울림통은 오동나무이고 12개의 현은 명주실로 만든다. 정악 가야금은 오동나무의 뒷면을 파고 안족을 얹혀 만드는데, 주로 줄풍류나 가곡반주에 쓰였다.하배황(㣴,Eb)부터 중(仲,Ab)까지를 연주할 수 있다. 산조가야금은 산조나민요, 시나위 합주에 쓰기 편하도록 줄 사이가 좁고 길이도 짧게 만든 가야금이다.\n\n연주법은 바르게 앉은 뒤 오른편 무릎위에 가야금의 윗부분을 올려놓고, 오른손은 엄지, 집게, 중지 등으로 뜯고 퉁기며 소리를 내고, 왼손은 안쪽 바깥쪽 부분의 오른손으로 눌렀던 줄을 눌렀다 놓았다 하며 소리를 낸다." + }, + { + "name":"거문고", + "image_name":"geomungo", + "short_desc":"고구려에서 유래된 한국의 전통 현악기", + "desc":"거문고는 낮고 중후한 소리부터 높은 소리까지 넓은 옥타브의 소리를 내는 고구려에서 유래된 한국의 전통 현악기이다. 현학금(玄鶴琴), 현금(玄琴)이라고도 한다, 증보문헌비고에 의한 악기 분류법 중 사부(絲部)에 속한다.\n\n통나무 통에 명주실 여섯을 매어 술대로 뜯는 악기로, 줄풍류를 비롯하여 가곡반주·산조에 쓰인다. 소리는 깊고 꿋꿋하며 장중하여 예로부터 백악지수(百樂之首)라 하여 선비들이 음악의 도를 닦는 그릇으로 소중히 여겨 왔다.\n\n본래 4현 17괘였으나 지금은 6현 16괘로 바뀌었다. 삼국사기에 의하면 고구려의 재상이었던 왕산악(王山岳)이 중국 악기인 칠현금(七絃琴)을 개조하여 거문고를 만들었다. 칠현금은 있으나 연주할 수 있는 사람이 아무도 없음을 왕이 슬퍼하자, 왕산악이 그 주법을 바꾸고 100여곡을 작곡하여 바치며 왕 앞에서 연주하니, 이윽고 검은 학이 날아들었다는 것이다. 이를 ‘현학금(玄鶴琴)’이라 부르다가, ‘검은(학)고’, ‘거문고’로 불린다고 한다.\n\n진나라 이전 고구려 고분벽화에 거문고 원형으로 보이는 악기가 있으므로 거문고는 그 이전부터 원형이 고구려에 있던 것 같다고 하는 설도 있다. 거문고는 금마저(金馬渚 : 전라북도 익산)에서 고구려 부흥운동을 전개하던 보덕국(報德國)이 대문의 난으로 망한후 고구려인 잔당들이 지리산 일대에 남원경(南原京 : 전라북도 남원)으로 이주하는 과정에서 정황상 고구려유민에서 신라 귀족으로 편입된 것으로 추정되는 옥보고(玉寶高)가 지리산에서 50년 동안 수련한 끝에 30곡을 지어 속명득(續明得)에게 전하고 속명득은 귀금선생에게, 귀금선생은 안장(安長)과 청장(淸長)에게, 안장은 극상(克相)과 극종(克宗)에게 가르쳤다고 한다. 극종은 7곡을 짓고, 극종 뒤에는 세상에서 거문고를 하는 이가 많았다고 한다. 왕산악이 지은 백여곡은 곡명도 전해지지 않으며, 옥보고가 지은 상원곡(上院曲)·중원곡(中院曲)·하원곡(下院曲)·남해곡(南海曲) 등 30곡은 이름만 전한다.\n\n거문고 명칭이 현학금에서 나왔다는 《삼국사기》 기록과는 별도로, '거문고'는 '검은고'로 고구려금(高句麗琴)이라고 해석하는 설도 있다. 고구려의 옛 이름인 ‘검’, ‘곰’과 현악기를 뜻하는 ‘고’가 합쳐져 만들어진 말로서 ‘고구려의 현악기’라는 뜻으로 불렸다는 것이다.\n\n거문고통의 앞면은 오동나무판, 뒷면은 밤나무판으로 되었다. 통의 길이는 5자 정도, 넓이는 5치(寸) 8푼(分) 정도가 된다. 거문고의 머리쪽을 용두(龍頭, 용의 머리), 꼬리쪽을 봉미(鳳尾, 봉황의 꼬리), 용두의 윗면을 좌단(坐團)이라 한다. 통 위에는 딴딴한 회목(會木)으로 된 16개의 괘가 차례로 열지어 세워져 있다. 용두 좌단과 통 사이에는 현침(絃枕)이 질려 있다.\n\n통 앞면 위는 6개의 줄이 용두와 봉미에 매어 있는데, 용두 쪽에는 줄이 뒷면 진괘에 매어져 있다. 줄은 가까운 쪽에서부터 문현(文絃)·유현(遊絃)·대현(大絃)·괘상청·기괘청·무현(武絃)이라 부른다. 유현·대현·괘상청은 괘 위에 얹혀 있고, 문현·기괘청·무현은 안족(雁足)으로 받쳐져 있다. 대현이 가장 굵고 문현·무현이 다음이고 괘상청이 그 다음, 기괘청이 그 다음 가늘고 유현이 가장 가늘다.\n\n오른손에 단단한 해죽(海竹)으로 된 술대(匙)를 쥐고 현침 가까이 줄을 내리치거나 거슬러치는데 술대로 앞면 통이 상하는 것을 막기 위하여 부드러운 가죽으로 된 대모(玳瑁)를 통에 덮는다.\n\n왼손은 손가락으로 줄을 눌러 괘를 짚어서 음을 내는데 운지법(運指法)은 다음과 같다. 소지(小指, 새끼손가락)는 문현 위에 붙이고, 무명지는 유현을, 장지는 대현을, 식지(食指)와 엄지는 유현과 대현을 두루 누른다. 거문고 구음법(口音法)은 줄과 누르는 손가락에 따라 정해져 있으며 괘는 바뀌어도 구음은 변하지 않는다. 대현을 장지로 누르면 ‘덩' 대현을 식지로 누르면 ‘둥' 대현을 엄지로 누르면 ‘등' 유현을 무명지로 누르면 ‘당' 유현을 식지로 누르면 ‘동' 유현을 엄지로 누르면 ‘징' 문현을 거쳐 유현의 어느 음을 2박에 걸쳐 탈 때에는 ‘쌀갱' 문현을 거쳐 유현의 어느 음을 한 박 안에서 빠르게 이어 탈 때네는 ‘싸랭' 문현을 거쳐 대현의 정해진 음까지 탈 때 장지로 짚은 음은 ‘슬기덩', 식지로 짚은 음은 ‘슬기둥', 엄지로 짚은 음은 ‘슬기등'이라 부른다." + } +] \ No newline at end of file diff --git a/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/Contents.json new file mode 100644 index 0000000..fd29d30 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "jikji~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "jikji~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "jikji~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@1x.png new file mode 100644 index 0000000..ca5ba7a Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@2x.png new file mode 100644 index 0000000..78d74e1 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@3x.png new file mode 100644 index 0000000..e3f9be3 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/jikji.imageset/jikji~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/Contents.json new file mode 100644 index 0000000..244558c --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "najeon~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "najeon~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "najeon~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@1x.png new file mode 100644 index 0000000..bf2da47 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@2x.png new file mode 100644 index 0000000..a7830e7 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@3x.png new file mode 100644 index 0000000..4e20248 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/najeon.imageset/najeon~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/Contents.json new file mode 100644 index 0000000..feac683 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "palman~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "palman~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "palman~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@1x.png new file mode 100644 index 0000000..f59df71 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@2x.png new file mode 100644 index 0000000..aaf8a6d Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@3x.png new file mode 100644 index 0000000..1a833fb Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/palman.imageset/palman~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/Contents.json new file mode 100644 index 0000000..566e7d0 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "poster~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "poster~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "poster~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@1x.png new file mode 100644 index 0000000..c1e9f15 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@2x.png new file mode 100644 index 0000000..9901bc3 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@3x.png new file mode 100644 index 0000000..562689c Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/poster.imageset/poster~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/Contents.json new file mode 100644 index 0000000..087eb85 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "samguk~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "samguk~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "samguk~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@1x.png new file mode 100644 index 0000000..fcabe81 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@2x.png new file mode 100644 index 0000000..8e4fede Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@3x.png new file mode 100644 index 0000000..71a17be Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/samguk.imageset/samguk~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/Contents.json new file mode 100644 index 0000000..711d148 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "woodshoes~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "woodshoes~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "woodshoes~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@1x.png new file mode 100644 index 0000000..cb660f4 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@2x.png new file mode 100644 index 0000000..51225bb Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@3x.png new file mode 100644 index 0000000..9b70695 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/woodshoes.imageset/woodshoes~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/Contents.json b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/Contents.json new file mode 100644 index 0000000..f7506c1 --- /dev/null +++ b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ywoonggo~universal@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ywoonggo~universal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ywoonggo~universal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@1x.png b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@1x.png new file mode 100644 index 0000000..684ec3a Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@1x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@2x.png b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@2x.png new file mode 100644 index 0000000..489e4d0 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@2x.png differ diff --git a/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@3x.png b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@3x.png new file mode 100644 index 0000000..cf7c0f8 Binary files /dev/null and b/Expo1900/Expo1900/View/Assets.xcassets/ywoonggo.imageset/ywoonggo~universal@3x.png differ diff --git a/Expo1900/Expo1900/View/Base.lproj/Main.storyboard b/Expo1900/Expo1900/View/Base.lproj/Main.storyboard index 25a7638..e588645 100644 --- a/Expo1900/Expo1900/View/Base.lproj/Main.storyboard +++ b/Expo1900/Expo1900/View/Base.lproj/Main.storyboard @@ -1,24 +1,252 @@ - + + - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Expo1900/ExpositionDataParsingTest/ExpositionDataParsingTest.swift b/Expo1900/ExpositionDataParsingTest/ExpositionDataParsingTest.swift new file mode 100644 index 0000000..bcb64b3 --- /dev/null +++ b/Expo1900/ExpositionDataParsingTest/ExpositionDataParsingTest.swift @@ -0,0 +1,50 @@ +// +// ExpositionDataParsingTest.swift +// ExpositionDataParsingTest +// +// Created by Schro on 2022/09/22. +// + +import XCTest +@testable import Expo1900 +final class ExpositionDataParsingTest: XCTestCase { + + var expositionData: Exposition? + var relicData = [Item]() + override func setUpWithError() throws { + try super.setUpWithError() + } + + override func tearDownWithError() throws { + try super.tearDownWithError() + expositionData = nil + } + + func test_박람회_데이터_파싱_여부_확인() { + var isNotNil: Bool = false + expositionData = try? JSONParser().getExpositionData() + + if expositionData != nil { + isNotNil = true + } + + XCTAssertTrue(isNotNil) + } + + func test_박람회_데이터_파싱_후_위치변수값_확인() { + let compareString = "프랑스 파리" + + expositionData = try? JSONParser().getExpositionData() + let location = expositionData?.location + + XCTAssertEqual(location, compareString) + } + + func test_아이템_데이터_파싱_후_첫번째_아이템_이름변수값_확인() { + let compareString = "직지심체요절" + + let itemData = try? JSONParser().getItemsData() + + XCTAssertEqual(itemData![0].name, compareString) + } +}