-
Notifications
You must be signed in to change notification settings - Fork 0
Z_4. RouteDataManager Random Data Generate
jeonghyeon Hwang edited this page Nov 27, 2022
·
6 revisions
단, 해당 가이드에서는 PointInformation을 빈 배열로 생성합니다.
- Date Random Generate를 위한 메소드 추가
// https://gist.github.com/nbasham/c219d8c8c773d2c146c526dfccb4353b
extension Date {
static func randomBetween(start: Date, end: Date) -> Date {
var date1 = start
var date2 = end
if date2 < date1 {
let temp = date1
date1 = date2
date2 = temp
}
let span = TimeInterval.random(in: date1.timeIntervalSinceNow...date2.timeIntervalSinceNow)
return Date(timeIntervalSinceNow: span)
}
}
- RouteDataManager.swift에 아래의 두 메소드를 추가
func randomRouteGenerate(for num: Int) {
let randomGymNameList: [String] = ["클라이밍 Alpha", "Beta 클라이밍", "C 클라임", "Grand Climb"]
let randomBool: [Bool] = [true, false]
for _ in 0..<num {
let randomDate = Date.randomBetween(start: Date(timeIntervalSince1970: 0), end: Date(timeIntervalSince1970: 300000))
let randomGymName = randomGymNameList[Int.random(in: 0..<randomGymNameList.count)]
let randomProblemLevel = Int.random(in: 0...9)
let randomBool = randomBool[Int.random(in: 0..<1)]
let pageGenerateNum = Int.random(in: 1..<5)
let pageInfoList: [PageInfo] = randomPageListGenerate(for: pageGenerateNum)
let routeInfo = RouteInfo(imageLocalIdentifier: "", dataWrittenDate: randomDate, gymName: randomGymName, problemLevel: randomProblemLevel, isChallengeComplete: randomBool, pages: pageInfoList)
coreDataDAO.createRouteInformationData(routeInfo: routeInfo)
}
saveData()
}
func randomPageListGenerate(for num: Int) -> [PageInfo]{
var pageList: [PageInfo] = []
for i in 0..<num {
pageList.append(PageInfo(rowOrder: i, points: []))
}
return pageList
}
- RouteDataManager.swift의
init
부에서 아래의 순서대로 메소드를 호출
coreDataDAO = RouteCoreDataDAO() // 기존 코드
randomRouteGenerate(for: 10) // 추가된 코드, 인자를 변경하여 생성할 RouteInformation 데이터 수 변경이 가능하다.
updateRepository() // 기존 코드
- 단, 동일한 데이터를 동일한 상태 그대로 유지하고 싶은 경우,
randomRouteGenerate
메소드는 1회만 호출한다. - 단, 매번 다른 데이터를 받고싶은 경우, 아래의 형태로 RouteDataManager.swift의
init
부를 수정한다.
coreDataDAO = RouteCoreDataDAO() // 기존 코드
deleteAllData()
randomRouteGenerate(for: 10) // 추가된 코드
updateRepository() // 기존 코드
- (중요)RouteFindingMainViewController에서 RouteDataManager를 호출
var routeDataManager: RouteDataManager = RouteDataManager()
var routeInfoList: [RouteInformation]!
override viewDidLoad() {
super.viewDidLoad()
routeInfoList = routeDataManager.getRouteFindingList()
}