본문 바로가기

Swift3

keyPath의 함수기능 User 구조체를 정의하고 그 배열을 만들자 struct User { let email: String let isAdmin: Bool } let users = [User(email: "A", isAdmin: true), User(email: "B", isAdmin: false), User(email: "C", isAdmin: true), User(email: "D", isAdmin: false)] 그리고 map을 이용해서 email이나 isAdmin값을 가져오거나 filter를 사용하려면 클로저를 전달해야한다. users.map{$0.email} users.map{$0.isAdmin} users.filter{$0.isAdmin} 하지만 keyPath를 함수처럼 사용해서 더 예쁘게 작성할 수 있다. use.. 2023. 8. 31.
비동기 함수 여러개 호출 후 completionHandler 호출 비동기 함수를 하나만 사용할 때에는 그냥 completionHandler를 사용하면 되지만, 비동기 함수를 여러개 호출 후 가장 마지막에 끝나는 함수가 종료된 후에 completionHandler를 호출시킬 수 있다. 어떤 상황이냐면, 비동기 함수를 하나만 호출할 때는 completionHandler에 함수가 종료된 후 호출될 함수를 넣어주면 정상적으로 동작하지만, 여러개의 비동기 함수를 호출했을 때(for문을 써서 호출하는 등)의 상황을 보면 저런식일거다. 비동기함수는 먼저 호출한 함수가 먼저 종료된다는 보장도 되어있지 않고, for문을 이용해서 같은 함수를 보낸다면 어떤 한 함수에만 completionHandler를 넣어주는것도 이상하고 원하는 대로 작동한다는 보장도 되어있지 않을것이다. 그렇다고 모.. 2023. 8. 21.
프로퍼티 감시자가 호출되는 경우 [Swift] struct Notification { let postImageURL: String? let postID: String? var userIsFollowed = false } Notification 구조체가 있다고 합시다. var notifications = [Notification]() { didSet { tableView.reloadData() } } 이 구조체를 이용해서 프로퍼티 감시자를 가진 배열을 하나 만들었습니다. 프로퍼티 감시자는 다음 세가지 모든 상황에서 호출됩니다. self.notifications = notifications notifications[index] = Notification()​ notifications[index].userIsFollowd = isFollowed 1. 프로.. 2023. 8. 20.