swift & iOS 63

[swift] 기존 데이터 타입에 추가 기능 작성하기: extension

지하철이나 버스 노선을 필요에 따라 연장하거나 노선을 추가 개통하는 것처럼 스위프트에서도 기존 데이터 타입에 필요에 따라 새로운 기능을 추가하게 해주는 도구인 extension이 있다. 기존의 클래스, 구조체, 열거형, 프로토콜 및 기타 데이터 타입에 기능을 작성할 수 있다. extension은 아래처럼 사용한다. 또한 extension이 프로토콜을 채택할 수도 있다. extension이 프로토콜을 채택할 수 있다는 특징을 이용하여 viewController가 여러 개의 프로토콜을 채택하고 컨트롤러 내부 소스가 마구 복잡해질 때 extension을 만들고 컨트롤러 대신 이 extension이 필요한 프로토콜을 하나씩 채택한 후, 해당 extension 내부에서 채택한 프로토콜을 준수하는 방법으로 컨트롤러..

swift & iOS/swift 2022.02.08

[swift] 딕셔너리의 key, value를 배열로 만들기

딕셔너리에 for...in 으로 접근할 때 딕셔너리의 keys나 values 프로퍼티를 이용하면 딕셔너리의 key만 또는 value만 가지고 for ... in 을 사용할 수 있다고 했는데 https://what-whale-wants-to-say-is.tistory.com/105 [swift] 딕셔너리에 for...in 으로 접근하기 for...in 을 사용하여 딕셔너리의 항목에 접근할 수도 있다. var myDict = ["one":1, "two":2] for d in myDict { print(d) } /* (key: "two", value: 2) (key: "one", value: 1) */ 딕셔너리에는 순서가 없기 때.. what-whale-wants-to-say-is.tistory.com 사실 ..

swift & iOS/swift 2022.02.07

[swift] 딕셔너리에 for...in 으로 접근하기

for...in 을 사용하여 딕셔너리의 항목에 접근할 수도 있다. var myDict = ["one":1, "two":2] for d in myDict { print(d) } /* (key: "two", value: 2) (key: "one", value: 1) */ 딕셔너리에는 순서가 없기 때문에 매번 print 할 때마다 다르게 출력된다. 아무튼 위처럼 항목에 통채로 접근하는 것보다는 아래처럼 튜플을 사용하여 key와 value에 각각 접근하는 방법이 더 유용하다고 생각한다. for (k, v) in myDict { print("key: \(k), value: \(v)") } /* key: two, value: 2 key: one, value: 1 */ 이것 말고도 딕셔너리의 keys, values ..

swift & iOS/swift 2022.02.07

[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