Swift의 isEmpty와 count == 0: 무엇이 다를까?
스위프트에서 컬렉션(collection)이 비어 있는지 확인하는 방법이 두 가지가 있다. 컬렉션의 count 값이 0 이거나 isEmpty 프로퍼티를 사용한다. 이 둘의 차이점이 있는지 알아보자. isEmpty Swift standard library에서 isEmpty가 어떻게 구현되어 있는지 보면 아래와 같다. isEmpty는 count == 0 ...
스위프트에서 컬렉션(collection)이 비어 있는지 확인하는 방법이 두 가지가 있다. 컬렉션의 count 값이 0 이거나 isEmpty 프로퍼티를 사용한다. 이 둘의 차이점이 있는지 알아보자. isEmpty Swift standard library에서 isEmpty가 어떻게 구현되어 있는지 보면 아래와 같다. isEmpty는 count == 0 ...
스위프트 고차 함수들 중에 map과 함께 reduce 함수를 많이 사용하게 된다. 시퀀스를 클로저를 통해 하나의 값으로 도출하는 강력한 함수이다. let numbers = [1, 2, 3, 4, 5] let sum = numbers.reduce(0, +) // or let sum = numbers.reduce(0) { $0 + $1 } print(su...
스위프트의 zip() 함수는 두 개의 Sequence의 항목끼리 묶어서 하나의 튜플 Sequence로 병합한다. 아래와 같이 두 개의 서로 다른 타입의 시퀀스를 하나의 시퀀스로 만들 수 있다. let words = ["일", "이", "삼", "사"] let numbers = 1...4 for (word, number) in zip(words, n...
Integer의 배수 확인하기
Swift에서 컬렉션(collection)으로 작업할 때는 배열(array)과 집합(set)이라는 두 가지 기본 데이터 구조가 자주 등장한다. 어떤 경우에서 적절한 데이터 구조를 사용할지에 대해 자세히 알아보자. 공식 문서에는 배열과 집합을 아래와 같이 정의한다. 배열(Array): 정렬된 무작위 액세스 컬렉션(“An ordered, rando...
문자열 보간법이란? 문자열 보간(String interpolation)은 고정 텍스트를 변수, 표현식, 값과 혼합하여 문자열을 구성할 수 있는 Swift의 강력한 기능이다. Swift의 문자열 보간 시스템은 타입에 안전하며 효율적이고 StringInterpolation 프로토콜을 통해 고도로 사용자 정의할 수 있다. let name = "John" ...
SE-0220에서 소개한 count(where:) 기능이 Swift 6에 추가 되면서 배열, Set 같은 곳에서 일치하는 항목의 개수를 구할 수 있다. 이전에는 filter()와 count를 조합해서 구할 수 있었는데 이는 즉시 버려지는 새로운 배열을 만드는 단점이 있었다. count(where:)는 이런 퍼포먼스 문제를 해결하고 사용자가 읽고 쉽게 ...
스위프트에서 숫자를 더 읽기 쉽게 작성하는 방법이 있다. Int와 Float에서 모두 앞에 0을 추가할 수 있고 밑줄을 포함해서 가독성을 높일 수 있다. 이 방법들은 모두 기본 값에 영향을 미치지 않는다. let paddedDouble = 000123.456 let oneMillion = 1_000_000 let justOverOneMillion =...
새로운 프로젝트 시작할 때 개발하기 전에 설정하는 것들이 있다. 최소 운영체제 버전을 설정하거나 지원되는 기기 등 여러 가지가 있다. 그중 하나는 스위프트 스타일이나 코드 포맷을 맞추기 위한 도구인 SwiftLint를 추가하는 경우가 있다. 시간이 지나 다시 신규 프로젝트를 만들 때 SwiftLint 추가하는 방법이 까먹을 때가 있다. 그래서 설정하는...
사이드 프로젝트 진행하면서 Vision Framework을 다뤄봤는데, 자연스럽게 카메라 기능에 대한 기술도 접하게 되었다. 단순하게 시스템 카메라 UI를 사용할 수 있고 직접 카메라 UI를 구현할 수 있었는데, 사이드 프로젝트 특성에 따라 자체 커스텀 카메라 UI를 구현하게 되었다. 이 블로그 포스트는 AVFoundation 사용해서 자체 커스텀 ...