본문 바로가기

iOS45

[Swift] (알다가도 모를) 문자열의 접근 문자열에 대한 알고리즘 문제를 Swift로 풀어보면서 Swift에서 문자열의 접근이 되게 까다롭다는 생각이 들었다. Python에서는 문자열도 배열처럼 대괄호를 통한 인덱스 접근이 곧바로 되지만, Swift는 그렇지 않기 때문이다. 따라서 다시 문자열 접근을 하는 상황이 생겼을 때 처음보다 덜 헤매기 위해 이번 포스팅을 쓰게 되었다. 문자열 접근에 대해 복습도 할 겸 이를 정리하고 싶었다. 📌 Swift에서 배열과 문자열의 인덱스 접근 인덱스 접근의 차이점 배열에서는 대괄호[]를 사용하여 인덱스 접근이 손쉽게 가능하다. 이에 반해 문자열은 .index를 메서드를 쓰는 것도 모자라서, startIndex/endIndex라는 메서드와 offsetBy라는 매개변수 이름까지 쓰면서 접근해야 한다. 이 뭔… 예시.. 2023. 4. 25.
[Swift] 문자열은 참조 타입이 아닌 값 타입이다? 📌 문자열의 타입은 값 타입(Value Type) Xcode에서 String의 Definition 검색 Xcode에서 String을 입력하고 커맨드(command) 키를 누른 채로 String을 눌러 보자. Swift에서 문자열은 구조체이다. 따라서 문자열은 값 타입이다. String이 구조체(struct)로 구현되어 있는 것을 알 수 있다. 아직 블로그에서 다루지는 않았지만 Swift에서 구조체는 값 타입이다. 따라서 String은 값 타입(value type)이다. 값 타입의 특징 - 복사본의 전달/할당 값 타입의 특성 상, 문자열 값을 함수/메서드에 전달할 때나 상수/변수에 할당할 때 그 값은 복사되어 복사된 값이 전달/할당 된다. 전달/할당 된 복사본의 문자열은 원본의 문자열을 수정한다고 해서 복.. 2023. 4. 24.
[Swift] 배열과 튜플의 차이점 면접 질문 중 하나인 '배열과 튜플의 차이점을 말해보세요.' 대비하여 정리해 보았다. 나아가 차이점에 대한 피드백을 받아서 수정을 하게 되었다. 📌 코드 예시 Array var names = ["Andy", "Lucas", "Ellie", "Nora"] print(names) // ["Andy", "Lucas", "Ellie", "Nora"] print(names[2]) // Ellie Tuple let aPerson = (name: "Andy", age: 20) print(aPerson.name) // Andy print(aPerson.1) // 20 📌 차이점 - 두 가지 타입에 관하여 Swift의 타입은 크게 명명된 타입(named type)과 복합 타입(compound type)으로 나누어 볼 수.. 2023. 4. 24.
[SwiftUI] OT + 자료 모음 아직 블로그에는 포스팅을 하지 않았지만 전체적으로 Swift 문법을 한번 둘러 보았다. 문법을 배우는 족족 포스팅을 하고 싶지만 이해가 되지 않는 부분이 많기도 하고 작성하는데 시간이 상당히 소요되어 미루는 일이 허다했다. 여하간 문법을 한번 훑어 보았으니 본격적으로 프레임워크를 공부하고 싶어서 SwiftUI를 택했다. UIKit을 할지 SwiftUI를 할지 고민을 많이 했지만, 여러 이유로 SwiftUI를 골랐다. 이미 진행 중인 프로젝트를 합류하고 싶어서 들어가 보니, SwiftUI로 설계한 프로젝트였다. UIKit보다는 SwiftUI의 난이도가 비교적 쉽다고 해서 먼저 시작해 보기로 했다. 📌 Swift Tutorial 자료 기본적인 학습을 중심으로 튜토리얼 자료를 모아 봤다. YouTube (1).. 2023. 4. 23.
[UIKit] 앱의 생명 주기(App’s Life Cycle) 보호되어 있는 글 입니다. 2023. 4. 17.
[Swift] Nil 결합 연산자(Nil-Coalescing Operator) 저번 포스팅에서 Swift의 기본 연산자에 대해 알아 보았다. 기본 연산자는 프로그래밍 언어의 공통적인 부분이라면, 이번 내용은 '옵셔널(optional)'이라는 자료형이 있는 Swift만의 독특한 연산자라 할 수 있다. [Swift] 기본 연산자(Basic Operators) 📌 용어(Terminology) 1. 단항 연산자(Unary Operator) 단일한 항목(single targets)에 작동하는 연산자. 접두사(prefix)와 접미사(postfix)로 나누어짐. var a, b, c -a b c! 2. 이항 연산자(Binary Operator) 2개의 항목(two ta andy-archive.tistory.com 📌 Nil 결합 연산자의 기본 형식 Nil 결합 연산자의 기본 형식은 a ?? b.. 2023. 4. 11.
[Swift] 문자열 리터럴(String Literals) 프로그래밍 언어의 기본 자료형 중 하나인 문자열에 대해 알아 보자. Swift는 문자열과 문자를 별도로 구분하는 언어이다. (아래의 여러 줄 문자열은 루이스 캐럴의 소설 『이상한 나라의 앨리스』(1865) 발췌하여 가져 왔습니다.) 📌 문자열 리터럴(String Literals) 문자열의 리터럴은 쌍따옴표 하나(")를 양끝에 감싸서 데이터를 표현한다. // 타입 추론 형식으로 문자열을 작성할 때 let aString = "This is a string." // 타입 명시로 문자열을 작성할 때 let anotherString: String = "I just wrote my second string." 📌 여러 줄 문자열 리터럴(Multiline String Literals) (1) 쌍따옴표 3개(""")를.. 2023. 4. 8.
[Swift] reversed로 컬렉션 타입의 순서를 뒤집는 뷰 반환하기 프로그래머스에서 자연수를 뒤집어 배열로 만드는 문제를 풀다가 reversed() 메서드를 알게 되었다. 이를 정리해 보기 위해 이번 포스팅을 하게 되었다. 아래의 공식 문서를 참고 했다. reversed() | Apple Developer Documentation 📌 정의 Returns a view presenting the elements of the collection in reverse order. 컬렉션의 요소를 반대 순서로 표시하는 뷰(view)를 반환한다. 여기서 중요한 것은 단순히 반대 순서로 만드는 게 아니라 이를 표시하는 뷰를 반환하는 것이다. 따라서 다시 그 컬렉션을 원하면 메서드를 사용한 이후 형 변환을 해야 한다. 📌 선언 func reversed() -> ReversedCollec.. 2023. 4. 7.
[Swift] 기본 연산자(Basic Operators) 📌 용어(Terminology) 1. 단항 연산자(Unary Operator) 단일한 항목(single targets)에 작동하는 연산자. 접두사(prefix)와 접미사(postfix)로 나누어짐. var a, b, c -a b c! 2. 이항 연산자(Binary Operator) 2개의 항목(two targets)에 작동하는 연산자. 2개의 항목 사이에 위치해야 하므로 모두 삽입사(infix)에 해당함. 3 + 5 4 - 9 3. 삼항 연산자(Ternary Operator) 3개의 항목(three targets)에 작동하는 연산자. 스위프트에서는 '삼항 조건 연산자(ternary conditional operator)'라는 오직 하나의 삼항 연산자만 갖고 있다. a ? b : c // condition.. 2023. 4. 6.
[Swift] enumerated()로 인덱스와 요소를 모두 반환하기 Swift의 문자열이나 배열에서 어떻게 하면 인덱스와 요소를 하나로 묶은 채 모두 출력할 수 있을까? 바로 enumerated() 메서드를 이용하면 된다. enumerate는 '열거하다'라는 뜻의 영단어이다. 📌 공식 문서 링크 enumerated() | Apple Developer Documentation Collection Types | Documentation 콜렉션 타입(Collection Types) | Swift 📌 요약 Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence. 쌍으로 묶은 (n, x) 과.. 2023. 3. 28.
반응형