210507 Fri

Sunny·2021년 5월 9일
0

Today I Learned

목록 보기
48/88

학습 내용: CaseIterable

이거 쥬스메이커때 스티븐이 가르쳐준건데 까먹었다 케..
아 이래서 야곰이 프로젝트 복습하라고 한건가 끙... 😅

Protocol
CaseIterable

A type that provides a collection of all of its values.

When using a CaseIterable type, you can access a collection of all of the type’s cases by using the type’s allCases property.

enum CompassDirection: CaseIterable {
    case north, south, east, west
}

print("There are \(CompassDirection.allCases.count) directions.")
// Prints "There are 4 directions."
let caseList = CompassDirection.allCases
                               .map({ "\($0)" })
                               .joined(separator: ", ")
// caseList == "north, south, east, west"

Protocol CaseIterable

allCases.randomElement()

custom enum type에서 랜덤으로 enum case를 뽑아내는 방법

let randomDirection = CompassDirection.allCases.randomElement()
print(randomDirection!)

참고 자료

How to get a random enum value from custom enum type

문제점/고민한점 → 해결방안

  • 중복된 인스턴스를 만듦
    UML에서 각 객체의 역할을 억지로 나눠준다는게
    타입을 은행, 은행원, Bank Director, 고객 이런 식으로 첨에 나눠줌

우리가 구상했던 건
업무 시작, 완료 이 부분만 은행원의 역할이라고 생각하고
handleCustomers() 메소드로 은행원 타입에 넣어주려고 했음.

근데 부분만 가져오려니 에러가 나서 결국 switch 구문 통째로 가져옴 ^.ㅠ
억지로 타입을 다른 파일로 옮기다보니
다른 타입에 있는 메소드를 부른다는게
중복된 은행 인스턴스를 여러개 만든 꼴이 되버렸다...

→ 필요없는 타입(은행원은 스레드이므로)을 지워주고
switch 구문은 다시 원래 있었던 위치인 Bank로 복구

기타)

  • 실행화면 녹화하는 법
  1. command + shift + 5 → 녹화할 영역 지정 후 녹화 시작 → 비디오로 저장
  2. Video to animated GIF converter 사이트에서 GIF 파일로 바꿔주기

Thanks to 이안 😊

profile
iOS Developer

0개의 댓글