전체 글 83

[SwiftUI] Deprecated된 tabItem(_:)을 대신하여 Tab()을 사용할 수 있다

[머릿말]Android 앱 개발 공부를 할 때도 느꼈던 것이지만 유독 앱 분야가 변동사항이 많은 것 같다. 비교적 최근에 출판된 책으로 공부를 하고 있음에도 불구하고 deprecated 되었다는 문구를 많이 확인하고 있다. deprecated 되었다는 것은 새로운 대체제가 있다는 것이므로 어떤 대체제가 있는지 찾아보며 공부하고 있는데 이것도 하나의 재미 포인트로 작용하는 것 같다.● tabItem(_:) 이란?공식 문서에서의 내용은 다음과 같다."뷰와 연관된 탭바 아이템을 설정한다."iOS 13.0부터 18.1까지 잘 사용된 함수인 것 같은데... 왜 사라지는 것인가... 이것을 사용하면 TabView의 하단에 tab bar item을 설정할 수 있다. 아래 예제를 통해 확인해보자.import Swift..

[SwiftUI] OutlineGroup과 DisclosureGroup의 차이점

[머릿말]List, OutlineGroup과 DisclosureGroup에 대해 공부하던 중 이것들의 차이점에 대해 궁금해졌다. 자식 데이터에 대한 계층적 구조를 가진 뷰를 만드는 공통점에 반해 차이점은 무엇인지 말이다. 결론부터 말하자면 OutlineGroup은 자식 데이터(children)가 있는 경우 알아서 그에 대한 계층적 뷰를 생성하여 보여준다. 그러나 DisclosureGroup은 계층적 뷰를 만들기 위해선 직접 작성해야 한다는 차이점이 존재한다. 즉, OutlineGroup은 계층적 구조를 가지는 데이터에 대한 뷰를 자동으로 만들어 주는 것이고, DisclosureGroup은 계층적 뷰를 만들 수 있는 껍데기(?)라고 할 수 있는 것이다.● OutlineGroup 이란?공식 문서에서의 내용은..

[Swift] String.allSatisfy(_:) 함수란?

[머릿말]프로그래머스 문제를 풀던 중 처음 보는 함수를 발견했다. 함수 이름만 봐도 대충 어떤 역할을 하는지 알 것 같지만 까먹지 않기 위해 따로 정리해놓으려 한다.⦿ 공식 문서공식 문서에서의 설명은 다음과 같다.시퀀스의 모든 요소가 주어진 조건을 만족하는지 여부를 나타내는 부울 값을 반환한다. 함수의 반환 값은 Bool 타입이다. 모든 요소가 조건을 만족하면 true, 그렇지 않으면 false를 반환한다. 내가 이 함수를 접하게 된 것은 주어진 자료형이 String인 경우였는데 공식 문서를 보다 보니 배열(Array)이나 딕셔너리(Dictionary) 등에서도 사용이 가능한 것 같다.  ⦿ 사용 예시1) 문자열인 경우 - Stringvar text: String = "0123456789"print(te..

[Swift] SubSequence(ArraySlice)를 그냥 사용하는 것과 저장하고 사용하는 것의 속도 차이가 발생하는 이유는?

[머릿말]프로그래머스에서 햄버거 만들기 문제를 풀며 경험한 일이다. 분명 동일한 알고리즘으로 작성된 코드인데 suffix(_:) 함수의 결과를 저장하지 않고 사용하면 시간 초과가 발생하고, 저장하고 사용하면 통과가 되는 것이다..! 단순히 저장의 유무에 따라 결과가 달라지는 것이 궁금하여 관련 이유를 찾아보게 되었고 알게 된 내용을 정리하고자 한다.⦿ 코드import Foundationfunc solution(_ ingredient: [Int]) -> Int { var stack: [Int] = [] var count = 0 // 재료 배열을 하나씩 탐색 for item in ingredient { stack.append(item) //..

[Swift] ASCII Code 변환 방법(숫자 <-> 문자 변환 방법)

[머릿말]Python에서는 아스키 코드를 문자로 변환하거나 문자를 아스키 코드로 변환하는 것이 chr( ), ord( ) 함수만 사용하면 됐기에 매우 간단했었다. Swift에서 변환하는 방법은 아직 익숙하지 않음에 따라 계속 찾아보게 될 것 같아 따로 정리를 하게 되었다.1. 문자 -> ASCII Code(숫자) 변환1-1. (문자).asciiValuevar a: Character = "a"print(a.asciiValue) // Optional(97)print(a.asciiValue!) // 97String 타입에는 사용할 수 없고 오직 Character 타입에만 사용할 수 있다.특정 문자에 대한 ASCII Code가 없을 수도 있으므로 반환 타입은 Optional 이다.Optional을 Unwrap..

[Swift] @discardableResult - 반환값 무시

[머릿말]Swift 코드를 살펴보던 중 처음보는 것을 발견하였다. 이름만 보면 '버릴 수 있는 결과'를 뜻하는 것 같은데 정확히 어떤 역할을 하는 것인지 궁금하여 찾아보게 되었다.1. @discardableResult@discardableResult란 메서드의 반환값을 사용하지 않는 경우에 사용하는 속성(Attribute)이다. Swift 공식 문서에서는 다음과 같이 정의되어 있다. Documentation docs.swift.org  1-1. 왜 사용하는가?아무런 값을 반환하지 않는 메서드가 아닌, 특정 값을 반환하는 메서드를 호출했지만 반환 값을 사용하지 않는 경우 Swift 컴파일러는 Warning을 띄운다. 1-2. 사용 방법사용 방법은 메서드의 func 키워드 앞 부분에 '@discardable..

[Swift] 선언형 프로그래밍 vs 명령형 프로그래밍

[머릿말]SwiftUI를 공부하려 보면 선언형 프로그래밍과 명령형 프로그래밍이라는 말을 접하게 된다. SwiftUI는 선언형 프로그래밍이라고 하고, UIKit은 명령형 프로그래밍이라고 하는데 이것들이 무엇이고 차이점은 무엇인지 궁금하여 찾아보게 되었다.1. 프로그래밍 패러다임명령형 프로그래밍과 선언형 프로그래밍은 프로그래밍 패러다임의 일종이다. 그렇다면 프로그래밍 패러다임이란 무엇일까? 프로그래밍이나 소프트웨어 개발에 접근하는 특정한 방식.특정 관점과 접근 방식에 따른 코딩 방식.간단하게 말해 프로그래밍 패러다임은 '프로그래밍을 하는 방식' 정도로 이해할 수 있다. 그럼 이제 명령형 프로그래밍과 선언형 프로그래밍의 차이점에 대해 알아보자. 2. 명령형 프로그래밍(Imperative) vs 선언형 프로그래..

[Swift] 열거형(enum: Enumerations) 총 정리

1. 열거형(enum)열거형이란 성격(종류)가 비슷한 값들의 그룹 개념으로 비슷한 데이터를 나타내는 값들을 모아서 정의한 것이다. 이는 다른 프로그래밍 언어에서도 종종 본 적이 있을 것이다. 예를들어 나라에 대한 열거형이라 한다면 아래와 같이 나타낼 수 있다.enum Countries { case korea case japan case america case canada}// 각 값을 쉼표(,)로 구분하여 한 줄로 작성하는 것도 가능enum Countries { case korea, japan, america, canada}열거형을 정의할 땐 위와 같이 열거형의 이름은 첫글자를 대문자로, 각각의 case는 소문자로 작성한다. 추가로 열거형은 각각의 값을 case로 나눠서 정의할..

[Swift] 함수(Functions) 총 정리

1. 함수함수란 특정 작업을 수행하는 코드 모음을 말한다. 함수의 이름을 지을 때는 함수의 동작에 관련되도록 짓는다. 예를 들어 더하는 기능을 하는 함수의 이름은 "add"라고 할 수 있다. 1-1. 함수의 정의함수는 하나 이상의 매개변수와 반환값을 가질 수 있다. 매개변수(parameter)는 없을 수도 있으며, 반환 값이 Void 타입인 경우 생략이 가능하다. func 함수명(매개변수명: 타입) -> 반환 타입 { ...함수에서 실행할 작업... return 반환값}  1-2. 매개변수(parameter)매개변수란 함수가 특정 동작을 수행할 때 사용할 값으로, "매개변수명: 타입" 형태로 사용한다. 매개변수명은 목적에 맞게 설정하도록 하며, 설정한 매개변수명은 함수 호출 시 사용해야 한다...

[Swift] 코딩 테스트에서 자주 쓰이는 max, min, zip, filter, reduce

[머릿말]코딩 테스트를 풀다보면 코딩 테스트에서 많이 사용되는 여러 함수가 있는 것 같다. 이 함수들을 사용하지 않고도 해결은 가능하지만 존재하는 것들을 잘 사용하면 더 편리하고 빠르게 해결할 수 있으니 이런 부류의 함수들은 잘 알아두는 것이 좋을 것 같다.1. max( )1-1. max(_:_:)max(_:_:) 함수에 대한 공식 문서에서의 내용은 다음과 같다. ❗️func max( _ x: T, _ y: T) -> T where T : ComparableReturns the greater of two comparable values. Parametersx: A value to compare.y: Another value to compare.Return ValueThe greater of x..