우선 Result 타입을 알아본 이유는 비동기 작업에서 에러 처리를 하다가 알게 된 키워드로 찾아보았습니다 Result 공식 문서 성공 또는 실패를 나타내는 값으로, 각 경우의 연관 값을 포함합니다 📌 Result 타입은 Swift 5 이전에 모든 오류를 전달 및 처리하는 데 유연성이 부족하여 하여 Swift 커뮤니티 내에서 일반적으로 사용하던 유형이었습니다. 더 복잡한 에러 처리 에러에 부합하지 않는 실패 값(즉, 비동기 작업)으로는 컴파일할 수가 없었기에 Result로 단점을 해결하기 위해 추가 되었습니다 - SE-0235 실패할 수 있는 비동기 API 작성 공식 문서 실패할 수 있는 함수, 메서드 또는 기타 API를 작성할 때 선언에 throws 키워드를 사용하여 API 호출이 오류를 발생시킬 수 ..
UIAlertController 경고 메시지를 표시하는 개체 UIAlertController ( title: String?, message: String?, preferredStyle: UIAlertController.Style ) title : 문자열을 사용하여 사람들의 주의를 끌고 경보 이유를 전달 message : 경고 이유에 대한 추가 세부 정보를 제공하는 설명 텍스트 preferredStyle : 경고 컨트롤러를 표시할 때 사용할 스타일로 이 매개변수를 사용하여 경고 컨트롤러를 작업 시트 또는 모달 경고로 구성 title을 nil로 설정하면, message가 title 같이 굵은 글씨로 표시 title, message를 nil로 설정하면 AlertAction만 표시 UIAlertControlle..
Unit Test 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다. 단위테스트라고도 하며, 메서드를 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. F.I.R.S.T Fast 테스트는 빨라야 합니다. 간단한 한 줄 변경 후에 테스트 실행을 주저한다면 테스트가 너무 느린 것입니다. 소프트웨어 프로젝트는 결국 수만 개의 단위 테스트를 거치게 되며 팀 구성원은 죄의식 없이 매분 단위 테스트를 모두 실행해야 합니다. Independent / Isolated 각각의 테스트는 서로 독립적이며 서로 의존해서는 안 됩니다. the text of the assertion가 포함된 각 테스트 클래스 이름과 테스트 메서드 이름은 무엇이 잘못되었고 어디에서 잘못되었는지..
Swift 에서 비슷한 Class와 Struct 비슷한 역할을 하지만 무엇이 다른지 보다가 여기까지 오게되는 여정 우선 Class 와 Struct 는 무엇이 다른가 ❓ Swift 에서 Class 와 Struct 유형의 Instance(인스턴스)에 적용되는 기능을 주로 설명을 합니다. 그렇기에 Object 보다는 일반적인 용어 Instance로 사용합니다. Class 는 상속을 통해 한 클래스가 다른 클래스의 특성을 상속할 수 있으며, 참조 타입입니다. Struct 는 값 유형입니다. 참조 유형은 변수나 상수에 할당되거나 함수에 전달될 때 복사되지 않고 기존 인스턴스에 대한 참조 값 유형은 변수 또는 상수에 할당되거나 함수에 전달될 때 값이 복사되는 유형입니다 Struct 와 Class 어느걸 써야 하나 ..
좀 더 명확하게 이해하고 제대로 쓰기 위해서 공부 Class 전통적인 OOP 관점에서의 클래스 단일상속 (인스턴스/타입) 메서드 (인스턴스/타입) 프로퍼티 참조 타입 Apple 프레임워크 대부분의 큰 뼈대는 모두 클래스로 구성 Struct 상속 불가 (인스턴스/타입) 메서드 (인스턴스/타입) 프로퍼티 값 타입 Swift 대부분의 큰 뼈대는 모두 구조체로 구성 Enum 다른 언어의 열거형과는 많이 다른 존재 상속 불가 (인스턴스/타입) 메서드 (인스턴스/타입) 연산 프로퍼티 값 타입 구조체의 사용은 ❓ 하나의 데이터타입으로 표현할 때 참조가 아닌 복사를 원할 때 자신이 다른 타입을 상속받을 필요가 없을 때 Value Type 데이터를 전달할 때 값을 복사하여 전달 Reference Type 데이터를 전달할..
클린 코드 책으로 유명한 베스트셀러이자 프로그래머인 로버트 마틴(Robert Cecil Martin)이 2000년도 초반에 SOLID 원칙에 대해서 논문을 통해 SOLID 원칙을 이야기 했으며, 이러한 개념을 SOLID 약어로 소개한 마이클 페더스로 인해서 구축되어졌다. SOLID가 무엇인가❓ Single Responsibility (단일 책임) Open/Closed (개방/폐쇄) Liskov Substitution (리스코프 치환) Interface Segregation (인터페이스 분리) Dependency Inversion (의존성 역전) SRP (단일 책임의 원칙, Single-Responsibility Principle) 이름에서 알 수 있듯이 클래스가 하나의 책임을 가져야 하며 변경의 이유도 ..
Firebase 데이터 베이스는 실시간 클라우드 호스팅 데이터베이스입니다. 앱이 오프라인 상태여도 모든 클라이언트에서 실시간으로 동기화 되어 데이터 저장 및 동기화를 할 수 있습니다. 데이터는 JSON 형태의 데이터를 으로 저장됩니다. 실시간 일반적인 HTTP 요청 대신 데이터 동기화를 사용, 데이터 변경될 때마다 연결된 모든 기기가 해당 업데이트를 수신합니다. 오프라인 데이터를 디스크에 유지하기 때문에 오프라인 상태일 때에도 응답성을 유지, 연결이 다시 설정되면 변경 사항을 수신하여 현재 서버 상태와 동기화합니다. 클라이언트 장치에서 엑세스 가능 따로 애플리케이션 서버 없이 모바일 기기나 웹 브라우저에서 직접 액세스 할 수 있습니다. Firebase는 두 가지의 데이터 베이스, Realtime Data..
프로젝트를 하다보니 버튼, 이미지뷰 등을 CGRect로 배치를 하였으나 하나 하나 설정을 해줘야 되는 번거로움과 업데이트가 너무 힘들어서 다른 방법을 찾다보니 AutoLayout을 알게 되었고 코드를 수정을 하려고 한다. CGRect (참고) : A structure that contains the location and dimensions of a rectangle. CGRect(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat) var imageButton: UIButton = { var button = UIButton(type: .custom) button.tintColor = .black button.frame = CGRect(x: 90, y: 1..