Skip to content

Commit

Permalink
#296: 지역 시군구 정보 가져오기, 도메인 + 데이터 레이어 추가 (json 파일 포함)
Browse files Browse the repository at this point in the history
  • Loading branch information
joseph704 committed Aug 8, 2024
1 parent 6a992ef commit c738b3a
Show file tree
Hide file tree
Showing 8 changed files with 470 additions and 0 deletions.
60 changes: 60 additions & 0 deletions StreetDrop/StreetDrop.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// CityAndDistrictsDTO.swift
// StreetDrop
//
// Created by 차요셉 on 8/1/24.
//

import Foundation
import OrderedCollections

struct CityAndDistrictsDTO: Decodable {
let informations: [CityInfomaion]

struct CityInfomaion: Decodable {
let name: String
let districts: [String]
}
}

extension CityAndDistrictsDTO {
func toDictionary() -> OrderedDictionary<String, [String]> {
var orderedDictionary = OrderedDictionary<String, [String]>()
informations.forEach {
orderedDictionary[$0.name] = $0.districts
}

return orderedDictionary
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import Foundation

import RxSwift
import OrderedCollections

final class DefaultMyPageRepository {
private let networkManager: NetworkManager
Expand Down Expand Up @@ -81,4 +82,20 @@ extension DefaultMyPageRepository: MyPageRepository {
return dto.toEntity()
}
}

func fetchCityAndDistricts() throws -> OrderedDictionary<String, [String]> {
guard let url = Bundle.main.url(forResource: "CityAndDistrictsData", withExtension: "json") else {
throw JSONLoadError.noBundleURL
}

guard let data = try? Data(contentsOf: url) else { throw JSONLoadError.convertingURLToDataError }

let decoder: JSONDecoder = .init()
do {
let cityAndDistricts = try decoder.decode(CityAndDistrictsDTO.self, from: data)
return cityAndDistricts.toDictionary()
} catch {
throw error
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,305 @@
{
"informations": [
{
"name": "전체",
"districts": []
},
{
"name": "서울",
"districts": [
"종로구",
"중구",
"용산구",
"성동구",
"광진구",
"동대문구",
"중랑구",
"성북구",
"강북구",
"도봉구",
"노원구",
"은평구",
"서대문구",
"마포구",
"양천구",
"강서구",
"구로구",
"금천구",
"영등포구",
"동작구",
"관악구",
"서초구",
"강남구",
"송파구",
"강동구"
]
},
{
"name": "인천",
"districts": [
"중구",
"중구영종출장소",
"중구용유출장소",
"동구",
"미추홀구",
"연수구",
"남동구",
"부평구",
"계양구",
"서구",
"서구검단출장소",
"강화군",
"옹진군"
]
},
{
"name": "경기",
"districts": [
"수원시",
"수원시 장안구",
"수원시 권선구",
"수원시 팔달구",
"수원시 영통구",
"성남시 수정구",
"성남시 중원구",
"성남시 분당구",
"의정부시",
"안양시 만안구",
"안양시 동안구",
"부천시 원미구",
"부천시 소사구",
"부천시 오정구",
"광명시",
"평택시",
"동두천시",
"안산시 상록구",
"안산시 단원구",
"고양시 덕양구",
"고양시 일산동구",
"고양시 일산서구",
"과천시",
"구리시",
"남양주시",
"오산시",
"시흥시",
"군포시",
"의왕시",
"하남시",
"용인시 처인구",
"용인시 기흥구",
"용인시 수지구",
"파주시",
"이천시",
"안성시",
"김포시",
"화성시",
"광주시",
"양주시",
"포천시",
"여주시",
"연천군",
"가평군",
"양평군"
]
},
{
"name": "대전",
"districts": [
"동구",
"중구",
"서구",
"유성구",
"대덕구"
]
},
{
"name": "세종",
"districts": []
},
{
"name": "대구",
"districts": [
"중구",
"동구",
"서구",
"남구",
"북구",
"수성구",
"달서구",
"달성군",
"군위군"
]
},
{
"name": "부산",
"districts": [
"중구",
"서구",
"동구",
"영도구",
"부산진구",
"동래구",
"남구",
"북구",
"해운대구",
"사하구",
"금정구",
"강서구",
"연제구",
"수영구",
"사상구",
"기장군"
]
},
{
"name": "강원",
"districts": [
"춘천시",
"원주시",
"강릉시",
"동해시",
"태백시",
"속초시",
"삼척시",
"홍천군",
"횡성군",
"영월군",
"평창군",
"정선군",
"철원군",
"화천군",
"양구군",
"인제군",
"고성군",
"양양군"
]
},
{
"name": "광주",
"districts": [
"동구",
"서구",
"남구",
"북구",
"광산구"
]
},
{
"name": "울산",
"districts": [
"중구",
"남구",
"동구",
"북구",
"울주군"
]
},
{
"name": "경남",
"districts": [
"창원시 의창구",
"창원시 성산구",
"창원시 마산합포구",
"창원시 마산회원구",
"창원시 진해구",
"진주시",
"통영시",
"사천시",
"김해시",
"밀양시",
"거제시",
"양산시",
"의령군",
"함안군",
"창녕군",
"고성군",
"남해군",
"하동군",
"산청군",
"함양군",
"거창군",
"합천군"
]
},
{
"name": "경북",
"districts": [
"포항시 남구",
"포항시 북구",
"경주시",
"김천시",
"안동시",
"구미시",
"영주시",
"영천시",
"상주시",
"문경시",
"경산시",
"의성군",
"청송군",
"영양군",
"영덕군",
"청도군",
"고령군",
"성주군",
"칠곡군",
"예천군",
"봉화군",
"울진군",
"울릉군"
]
},
{
"name": "전남",
"districts": [
"목포시",
"여수시",
"순천시",
"나주시",
"광양시",
"담양군",
"곡성군",
"구례군",
"고흥군",
"보성군",
"화순군",
"장흥군",
"강진군",
"해남군",
"영암군",
"무안군",
"함평군",
"영광군",
"장성군",
"완도군",
"진도군",
"신안군"
]
},
{
"name": "전북",
"districts": [
"전주시 완산구",
"전주시 덕진구",
"군산시",
"익산시",
"정읍시",
"남원시",
"김제시",
"완주군",
"진안군",
"무주군",
"장수군",
"임실군",
"순창군"
]
},
{
"name": "제주",
"districts": [
"제주시",
"서귀포시"
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import Foundation

import RxSwift
import OrderedCollections

protocol MyPageRepository {
func fetchMyDropList() -> Single<TotalMyMusics>
Expand All @@ -16,4 +17,5 @@ protocol MyPageRepository {
func fetchMyLevelProgress() -> Single<MyLevelProgress>
func fetchLevelPolicy() -> Single<[LevelPolicy]>
func fetchMyDropMusic(itemID: Int) -> Single<Musics>
func fetchCityAndDistricts() throws -> OrderedDictionary<String, [String]>
}
Loading

0 comments on commit c738b3a

Please sign in to comment.