목록2025/03/03 (7)
大器晩成
에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라, 리턴 타입 자체를 Result 타입으로 구현해서 함수 실행의 성공과 실패의 정보를 담아서 반환합니다.enum ResultSuccess, Failure> where Failure : Error, Success : ~CopyableReuslt 타입은 열거형으로 구성되어있으며, sucess(연관값)와 failure(연관값)로 구분됩니다.enum PayslipError: Error { case tooMany case tooSmall}func getPayslip(money: Int) -> Result { if money >= 3_000_000 && money 에러 처리보다 깔끔하게 코드를 구성할 수 있습니다.get() 메서드..
제네릭 코드 (Generic code)는 정의한 요구사항에 따라 모든 타입에서 동작할 수 있는 유연하고 재사용 가능한 함수와 타입을 작성할 수 있습니다. 중복을 피하고 명확하고 추상적인 방식으로 의도를 표현하는 코드를 작성할 수 있습니다.제네릭은 Swift의 강력한 특징 중 하나이고 Swift 표준 라이브러리 대부분은 제네릭 코드로 되어 있습니다. 예를 들어 Swift의 Array와 Dictionary 타입은 둘 다 제네릭 컬렉션입니다. Int 값을 가진 배열, 또는 String 값을 가진 배열 또는 실제로 Swift에서 생성될 수 있는 다른 모든 타입에 대한 배열을 생성할 수 있습니다. 마찬가지로 모든 지정된 타입의 값을 저장하기 위한 딕셔너리를 생성할 수 있고 해당 타입에 대한 제한은 없습니다Appl..
에러 던지기함수나 메서드는 오류 객체를 외부로 던질 수 있다는 것을 컴파일러에 알려주기 위해 정의 구문을 작성할 때 throws 키워드를 추가합니다.func canThrowErrors() throws -> Stringfunc cannotThrowErrors() -> String에러가 발생할 수 있는 함수, 메서드, 또는 초기화 구문을 나타내기 위해 함수의 선언 중 파라미터 뒤에 throws 키워드를 작성합니다. throws로 표시된 함수는 던지기 함수 라고 합니다. 함수에 반환 타입이 지정되어 있으면 throws 키워드는 반환 화살표 (->) 전에 작성합니다. 에러의 처리 과정1. 에러의 정의 (에러 프로토콜을 채택해야 함)enum PayslipError: Error { case tooMany ..

만약 앱스토어에 이런 화면을 구현하신다면 어떻게 구현하실 건가요?Compositional Layout을 사용하지 않는다면, 저는 붉은 테두리는 컬렉션뷰로 만들고, 파란색 테두리는 버튼 또는 두 번째 컬렉션뷰의 헤더로 만들 거 같습니다. 그렇다면 현재 컬렉션 뷰가 두 개가 필요한 것인데, 이걸 하나의 컬렉션뷰로 만들 수 있다면 편하게 관리할 수 있을까요?개발자마다 다르겠지만, Compositional을 활용해서 하나의 컬렉션뷰로 만들어 보려고 합니다. 우선 레이아웃은 위의 그림과 같이 잡았습니다. 코드로 다시 말씀드리겠지만, 첫 번째 섹션은 하나의 그룹이 하나의 아이템을 갖도록 구성했습니다.두 번째는 그룹 2개를 사용했으며, 그룹 안에 그룹이 있으며 아이템 3개가 내부 그룹을 구성합니다. 외부 그룹은 내..