여기를 클릭하면 간략한(?) 나의 깃허브가 있다 ㅎㅎ
MyAsset이라는 자산 관리 앱의 첫 번째 화면을 만들고 있는데 역대급으로 어렵다...ㅋㅋ
SWIFTUI로만 만들고 있는 앱이다
지금은 자산 페이지만 만들었지만 추천, 알림,설정 등도 이동가능하게 tabView로 전체를 감쌌다.
맨 위에 '내 자산' 과 '+자산 추가' 부분은 Navbar안에 들어있는 item들이다.
대부분의 앱이 그러하듯 상단 부분은 직관적인 UI를 구성하였다. + 이동 편이하게
enum AssetMenu: String, Identifiable, Decodable {
//전역으로 지정하고 싶으면 static var, static let으로!!
// enum은 비교할때 쓰면 편하다
case creditScore
case bankAccount
case investment
case loan
case insurance
case creditCard
case cash
case realEstate
var id: String {
return self.rawValue //enum이 RawRepresentable 프로토콜을 채택
//type은 init?(rawValue:)로 인스턴스화 되었기 때문에 optional 입니다.
}
var systemImageName: String {
switch self {
case .creditScore:
return "number.circle"
case .bankAccount:
return "banknote"
case .investment:
return "bitcoinsign.circle"
case .loan:
return "hand.wave"
case .insurance:
return "lock.shield"
case .creditCard:
return "creditcard"
case .cash:
return "dollarsign.circle"
case .realEstate:
return "house.fill"
}
}
var title: String {
switch self {
case .creditScore:
return "신용점수"
case .bankAccount:
return "계좌"
case .investment:
return "투자"
case .loan:
return "대출"
case .insurance:
return "보험"
case .creditCard:
return "카드"
case .cash:
return "현금영수증"
case .realEstate:
return "부동산"
}
}
}
각각의 Asset을 Enum으로 만들어 비교 후 적합한 이미지와 텍스트를 전달해 줬다.
오늘 클론코딩을 하면서 다시한번 복습한 내용은 Grid부분까지이다.
솔직하게 그냥 반복해주는 녀석이라고만 생각했다.
그러다가 id: \.self를 적길래 이게 뭐지하고 찾아봤다가 ForEach를 끝까지 팠다...
배열 등 인덱스를 가지는 녀석들만 가능!!
인덱스를 가지기 때문에 시간복잡도는 O(1)이다. ->인덱스보고 바로찾기
번외로 문자열은 양방향 접근컬렉션 방식이다
-> 문자열 처음부터 끝까지 찾기 때문에 시간 복잡도 O(N)이다.
문자열과 배열의 시간복잡도는 count 프로퍼티 속도도 마찬가지!!
(전체 개수 세는거!!)
ForEach문에서는 id가 필요!!!
-> 그래서 ForEach가 따로 id 설정 안하면 내부애서 id갖게 해준다
이런 id도 Hashable을 만족해야한다! -> Int, String, Float, Boolean 다 만족함
Hashable이란 unique한 키를 말한다!!
내가 만든 객체들도 비교 가능하게 만드는 애!
Hash 값을 만들더라도 내부 값이 같으면 같은 결과가 나올 것이
ForEach는 0..<9 같은 (open)Range만 가능!
(close)Range인 0...10은 안되더라... 이거 충격!!
Why?라는 끊없는 질문에 계속해서 답을 찾아가는 과정이 개발자라는 직업으로서 필수 과정이라고 생각한다.
ForeEach 안을 계속 파고들면서 '이게 뭐지' 라는 물음에 답을 찾아냈다.
이 질문에 답을 찾는 시간이 1시간 조금 안되게 걸렸다...
우리가 무심코 쓰는 '이게 왜 필요하지? 이게 뭐지?' 라는 답을 내 스스로 만족할때까지 찾아보자!!