따로 정리
늦은 복습 시작
빨리 앱만들기를 하고 싶은 마음과 그렇지 못한 진도량 (코쓲)
오늘 내용은 사실 이해하기 크게 어려운 부분들은 아니었다. 다만 스위프트에서 날짜와 시간 다루기가 지난번에 들었을때는 전체 그림을 잘 잡지못해서 개념이 혼재된 느낌도 조금 있었는데, 확실히 두번듣고, 앞에 개념도 선명한 채로 들으니 훨씬 이해도 잘되고 혼재되지 않았다.
let's swift 에서 함수와 객체사이 세션에서도 봤던 부분이라 좀 더 눈에 잘 들어왔던 것 같다.
Result 타입 사용 없이 : 파라미터가 두개인(데이터, 에러) completion 콜백함수로 정의 , 내부에서 조건에 따라 completion함수에 데이터, 혹은 에러(열거형 case)를 넣어 실행
Result 타입 사용 해서 : 파라미터가 한게 Result 타입인 콜백함수로 정의, 내부 completion 함수호출 시 각 열거형(success, failure)에 따라 내부에 연관값을 넣어서(데이터, 혹은 에러(열거형 case)) 실행 => 클로져에서 result 를 switch 문으로 success 케이스, failure케이스 별로 let 바인딩을 진행하여 연관값을 꺼내서 사용
코드가 훨씬 깔끔하고 옵셔널바인딩 등도 불필요해진다
암기하지 않고 찾아쓴다, 큰그림 그리기
Date구조체 => Calendar 구조체 / DateFormatter 클래스
Date구조체로 인스턴스 생성 (현재시간 date 인스턴스 형태로 만들어짐 : 기준시간 referenceDate + 간격시간(timeIntervalSinceReferenceDate))
Calendar구조체 => 타입속성 current 사용(양력달력을 반환) / locale/ timeZone 설정
component메서드(열거형, from:) => date인스턴스에서 연/월/일/시/분/초/요일(숫자) 추출
dateComponents 메서드(열거형 배열, from:) => 배열형태로 전달, 추출가능
열거형으로 요일을 만들고 case별로 원시값 설정, 타입계산속성을 통해 열거형의 rawValue(component메서드를 통한 요일숫자 추출)로 요일 case리턴
dateComponents메서드의 [.day], from: , to: 를 통한 간격계산예시
DateFormatter클래스 사용 : 지역.시간설정/ 날짜,시간형식 설졍 => 기본구현사용 (.dateStyle, .timeStyle) 혹은 커스터마이징 (.dateFormat 속성 설정 => 유니코드표준 활용) 후 string(from: ) 메서드를 통해 문자열 반환
예시 : 포스팅 시 Date인스턴스 생성, 해당 구조체 내에 계산속성으로 포스팅 시간 인스턴스를 문자열로 변환하여 반환해주는 기능 구현
.date(from: 문자열) 로 다시 Date인스턴스로 변환도 가능
DateComponents구조체 사용여 내가 원하는 시간, 날짜를 Date인스턴스로 변경가능 => DateComponents 인스턴스 생성 후 year, month, day등의 속성 값 재할당 => Calendar.current.date(from: 인스턴스) 를 통해 Date인스턴스로 변경 => Date구조체를 확장하여 내부에서 init?으로 구현해주면 더 깔끔하고 세련됨
(소문자 self기능 기억하기)