
코드의 세부 구현 내용을 숨기는 것이 가능하도록 만드는 개념 (객체지향의 은닉화가 가능해짐 ) 개념 코드의 영역을 분리시켜, 효율적으로 관리가 가능합니다. class SomeClass { private var name = "이름" // 외부에서 접근불가 하도록 제한 (private 키워드) "은닉화" func nameChange(name: String) { self.name = name } } let object1 = SomeClass() // 인스턴스의 프로퍼티에 접근이 불가합니다. //object1.name = "홍길동" // 이름을 속성을 바꾸려면 특정 메서드로 변경은 가능하죠. object1.nameChange(name: "Danny") 기본 원칙: “타입(Type)” 보다 낮은 수준의 접근제어는..

“함수”를 파라미터로 사용하거나 “함수”를 리턴합니다. 각 데이터를 클로저로 보내 작업을 시킵니다. map 함수 기존 배열의 각 Element를 새롭게 매핑해서 새로운 배열로 리턴하는 함수 (데이터를 변형할 때 사용합니다) var numbers = [1, 2, 3, 4, 5] var mapping = numbers.map { n in return "숫자: \(n)" } var numMapping = numbers.map { $0 * 5 } String형도 일종의 배열(데이터바구니)입니다. String형의 map함수는 각각의 값을 Character형으로 변환시킨 후 배열로 반환합니다. str = "1" + "2" + "3" + "4" + "5" 이렇게 각각의 element들을 뽑아서 배열로 만들 수 있습니..

inout 파라미터 함수의 파라미터는 기본적으로 값타입입니다. 파라미터는 임시 상수(let)이기 때문에 변경 불가능 하죠. 그러므로 아래와 같이 전역변수를 함수 안에서 그냥 변경할 순 없습니다. var firstInt = 10 var secondInt = 20 func swap(_ a: Int, _ b: Int) { var temp = a a = b b = temp } swap(firstInt, secondInt) // error: Cannot assign to value: 'a' is a 'let' constant // error: Cannot assign to value: 'b' is a 'let' constant 만약 inout 파라미터를 사용한다면 inout 파라미터는 함수 내에서 변수를 직접 변..

Type Alias 사용자가 원하는 이름으로 타입 이름을 만들어 줄 수 있습니다. 즉, 타입의 별칭, 약칭입니다. 가독성 상승. 새로운 타입으로 변경이 아니라 기존 타입의 역할만 해줍니다. 표현식 // 이름에서 첫 글자는 대문자 사용 typealias (사용할 이름) = (설정할 타입) // ex typealias NetworkService = Result typealias Calculator = (Double, Double) -> Double 사용법 간단하게, ThreeStr이라는 이름으로 3개의 String을 타입을 갖고 있는 튜플을 만들어 봤습니다. typealias ThreeStr = (String, String, String) let box: ThreeStr = ("과자", "인형", "Mac"..

의미 오른쪽에 있는 데이터 값을 왼쪽의 데이터 공간에 저장한다. (담는다) var a = 1 var b = a + 7 // 1이란 데이터를 a라는 공간에 저장한다.(담는다) // a + 7란 데이터를 b라는 공간에 저장한다.(담는다) 서로 같다는 뜻이 아닙니다. 같다는 '== , 같지 않다는 '!=' 를 사용해야 합니다.

Certificates, Identifiers & Profiles 세팅 1. 인증서 클릭 애플 디벨로퍼 홈페이지로 들어가서 인증서로 들어가기 2. key 만들기 처음으로 키를 생성해줘야 한다. 사용할 기능(WeatherKit)에 대해서 체크 Register 버튼 클릭 Download 받은 걸 안전한 장소에 보관(한 번만 다운로드 가능하다) Key ID와 Apple ID는 만약 Web Token 생성이 필요할 때 사용. 3. App ID 만들기 Identifiers 클릭 Continue -> Select Typle : App 클릭 Bundle ID와 Xcode의 Bundle Identifier랑 같아야 한다 Xcode에서 기본 설정 Capability 클릭 WeatherKit을 추가해주면 사용 준비 끝 날..

Custom Delegate 오늘은 Custom delegate 생성 방법에 대하여 알아봅시다. 기본 Delegate 관한 내용은 [iOS/Swift] 델리게이트 패턴 (Delegate)를 참고해 주세요. 보통 Delegate 패턴은 두 컨트롤러 간의 데이터를 전달을 위한 쌍방향 커뮤니케이션 방법이다. 예를 들어 우리가 인터넷 쇼핑을 한다고 생각해 보자. 원하는 물건을 선택하고 수량 입력 후 장바구니 추가 버튼을 누르게 되면 누르는 즉시 장바구니에 물건이 업데이트된다. 개발자의 입장에서 보자면 사용자의 입력을 받아 추가 버튼을 누르는 순간 상품 컨트롤러에서 얻은 정보를 장바구니 컨트롤러로 전달시켜 작업을 하게 되는 거죠. 상품 컨트롤러가 장바구니 컨트롤러에게 일을 시킨다! 상품 컨트롤러에서 Delegat..

Delegate Delegate 단어의 뜻 사전적 의미로 위임하다, 대리자라는 뜻을 갖고 있습니다. 객체 지향 프로그래밍에서 쉽게 말해서 델리게이트 패턴은 하나의 객체가 모든 일을 처리하는 것이 아니라 처리해야 할 일 중 일부를 다른 객체에게 위임한다는 거죠. 즉, 객체와 객체 간 쌍방향 커뮤니케이션의 방법입니다. Delegate 패턴은 데이터 전달 혹은 작업을 하는 데 처리하는데 있어 작업이 많아 원래 일을 처리해야 할 녀석이 아닌 다른 컨트롤러에게 대신 수행하도록 시키는 것이죠! 장점 프로토콜 사용으로 뛰어난 재사용성. 프로토콜에 필요한 메소드들이 명확하게 명시되며 정보 전달도 가능. 객체 지향 프로그래밍을 따름. (처리할 일의 일부를 다른 객체에게 위임함) 로직의 흐름을 따라가기 쉬움. 단점 많은 ..

날짜 타입 변환 String -> Date Date -> String unix 시간 변환 ISO8601DateFormatter 참고(날짜 형식) 달력 아이콘 제작자: Freepik - Flaticon

코드로 작성 시 컴파일 시 메모리에 바로 올라갑니다. —> 다음으로 스토리보드의 메모리 생성 —> 그다음 서로 연결시킨 후 viewDidLoad 호출. 화면이동 및 데이터 전달 방법 4가지 화면이동 방법과 5가지 데이터 전달방법을 소개하겠습니다. 화면이동 1. 코드로 직접 이동 2. 스토리보드로 뷰 컨트롤러만 만들고 화면이동 3. 스토리보드의 간접세그로 연결 후 화면이동 4. 스토리보드의 직접세그로 연결 후 화면이동 데이터 전달방법 1. 직접 프로퍼티로 접근하여 전달 2. 세그를 통한 데이터 전달 3. 클로저를 통해 전달 4. 노티피케이션을 통한 전달 5. 델리게이트 패턴을 통한 전달 데이터 전달과 화면이동은 동시에 일어나니 서로 묶어서 설명드리겠습니다. 시작 오늘 해볼 것은 버튼을 누르면 텍스트필드의 ..