분류 전체보기 127

[swift] reduce

// 출처: https://developer.apple.com/documentation/swift/array/2298686-reduce let numbers = [1, 2, 3, 4, 5, 6] let total = numbers.reduce(0) { partialResult, num in print("partialResult: \(partialResult), num: \(num)") return partialResult + num } reduce의 첫번째 parameter는 (위에서 0인 부분) 초기값이다. 처음 reduce의 클로저가 호출되면 이 초기값이 partialResult로 넘어간다. 클로저가 호출될 때 마다 클로저의 parameter들이 어떻게 변화되는지 보면.. partialResult: ..

swift & iOS/swift 2022.02.04

[swift] 배열에 요소를 추가하는 append와 insert 그리고 딸기 케이크 (?)

스위프트의 배열에 어떤 값을 새로 추가하고 싶을 때는 append나 insert 메소드를 사용하면 된다. // 출처: https://developer.apple.com/documentation/swift/array var students = ["Ben", "Ivy", "Jordell"] students.append("Maxime") students.append(contentsOf: ["Shakia", "William"]) students.insert("Liam", at: 3) // // ["Ben", "Ivy", "Jordell", "Liam", "Maxime", "Shakia", "William"] append 메소드를 사용하면 배열의 맨 끝에 값을 추가한다. contentsOf를 사용하면 배열을 통채..

swift & iOS/swift 2022.02.04

[swift] init 메소드의 종류

이전 포스팅 '프로퍼티를 초기화 하는 3가지 방법' 중에 init 메소드를 작성하는 방법이 있었다. 여기서는 init 메소드의 종류에 대해 정리하려고 한다. 이번에도 역시 유튜브 이 영상을 참고했다. 1. designated initializer 클래스의 모든 프로터피를 초기화 하는 initializer이다. 클래스 내에 초기화 되지 않은 프로퍼티가 있다면 클래스 내에 최소 한 개 이상의 designated initializer를 작성하여 프로퍼티를 초기화 해주어야 한다. 그리고 초기화가 끝나지 전에 다른 메소드를 호출할 수 없다. 다른 메소드 중에 프로퍼티에 접근하는 메소드가 있으면 어떡해,,, 2. convenience initializer 일부 프로퍼티만 초기화 하기 때문에 self.init() 처..

swift & iOS/swift 2022.02.03

[swift] 프로퍼티 초기화 하는 방법 3가지

1. 프로퍼티에 초기값을 할당한다 class Person { var name: String = "person" } 특히 클래스는 프로퍼티에 초기값이 없으면 아래와 같은 경고 메시지가 나온다. 구조체는 init 메소드가 있는것처럼 자동으로 초기화를 해주기 때문에 저렇게 놔둬도 아무런 메시지가 뜨지 않는다. 2. 프로퍼티를 옵셔널 타입으로 둔다 옵셔널 타입으로 두면 기본값이 nil로 셋팅되어서 어쨌든 프로퍼티에 뭐라도 할당되어 있게 된다. class Person { var name: String? } 3. init 메소드 내에 프로퍼티를 초기화하는 코드를 작성한다. 프로퍼티에 초기값도 할당되어 있지 않고 옵셔널 타입도 아니라면 init 메소드를 작성하여 프로퍼티를 초기화 해야 한다. class Person ..

swift & iOS/swift 2022.02.03

[swift] delegate 패턴 (feat. 프로토콜) & 구현해보기

Delegate 패턴 delegate 패턴은 mvc, mvvm... 처럼 디자인 패턴의 한 종류라고 한다. 하나의 객체가 모든 일을 다 처리하기 보다는 처리할 것 일부를 다른 객체에 넘기는 것이다. 스위프트에서는 delegate 디자인 패턴으로 작성할 때 보통 프로토콜을 많이 활용한다고 한다. '디자인 패턴'에 대한 정의는 a proven solution to a common problem 인데, 그럼 어떤 problem이 있었길래 delegate 디자인 패턴이 생긴 것일까? 예를 들어, UITextField 라는 클래스가 있다. UITextField를 참조하게 될 많은 클래스들이 텍스트 필드에 어떤 이벤트가 발생하면 UITextField로 부터 알림을 받고 싶을 것이다. 하지만 UITextField가 ..

swift & iOS/swift 2022.02.01