반응형
여러개의 Action을 한번에 추가하기
콜렉션의 사용법중 forEach와 for in 이 있다.
for in 은 모든 요소의 갯수만큼 반복하지만 for each는 클로저를 파라미터로 주고 요소 갯수만큼 반복한다.
For - each는
반복 실행하려는 코드를 파라미터로 받고, 저장된 요소는 클로저 상수로 전달된다
for - in문은 우리가 직접 구현하는 "반복문"
하지만 forEach는 내가 반복하고 싶은 구문을
forEach라는 함수의 파라미터로 "클로저"로 작성해서 넘겨주는 것
그렇기 때문에,
반복문 안에서만 사용할 수 있는 continue, break는
for - in 에선 사용 가능하지만, forEach에서는 불가능하다.
내가 전달한 print 함수를 찍는 클로저를 nums 요소의 갯수(4)만큼 반복
let nums: [Int] = [1, 2, 3, 4]
nums.forEach {
print($0) // 1 2 3 4
}
반복 index 보기
nums.enumerated().forEach {
print("(index: \($0) num: \($1))") // (index: 0 num: 1) (index: 1 num: 2) (index: 2 num: 3) (index: 3 num: 4)
}
nums.indices.forEach {
print("(index: \($0) num: \(nums[$0]))") // (index: 0 num: 1) (index: 1 num: 2) (index: 2 num: 3) (index: 3 num: 4)
}
For - in과 마찬가지로 enumerated 메서드나 indices 를 이용
Dictionary
let dict: [String : String] = ["A" : "Apple", "B" : "Banana", "C" : "Cherry"]
dict.forEach {
print("(\($0.key) : \($0.value))") // (B : Banana) (C : Cherry) (A : Apple)
}
dict.forEach { (key, value) in
print("(\(key) : \(value))") // (C : Cherry) (A : Apple) (B : Banana)
}
dict.keys.forEach {
print($0) // B C A
}
dict.values.sorted().forEach {
print($0) // Apple Banana Cherry
}
set
let nums: Set<Int> = [1, 2, 3, 4]
nums.forEach {
print($0) // 2 3 1 4
}
여러개의 얼럿액션버튼 배열을 생성해 alert이라는 얼럿컨트롤러에 foreach를 이용할 수 있다.
[
prdButton,
devButton,
qaButton,
cancelButton
].forEach {
alert.addAction($0)
}
마찬가지로 addSubView에서도 사용가능
override func loadView() {
let view = UIView()
self.view = view
view.backgroundColor = .systemBackground
[decreaseButton, valueLabel, increaseButton, activityIndicator].forEach {
self.view.addSubview($0)
}
반응형
'모바일앱 > iOS' 카테고리의 다른 글
ios 소켓통신에 대하여 (0) | 2022.04.20 |
---|---|
WKWebView에서 보내는 JS를 캐치하는 방법 (0) | 2022.04.15 |
WKWebView 기본메서드 와 Delegate메서드 [WKUIDelegate,WKUIDelegate] (0) | 2022.04.14 |
MyWebBrowser프로젝트를 통한 웹뷰 뜯어먹기 (0) | 2022.04.08 |
네비게이션 컨트롤러 NavigationController 사용하기 (0) | 2022.03.26 |
[Gesture Recognizer] Long Press (3) | 2022.03.25 |
URLSession에 대하여 알아보기 (0) | 2022.03.23 |
MVC의 한계 (0) | 2022.03.22 |