📚 Swift 에서 문자열 index 접근에 대하여 Swift 에서 문자열은 어떻게 조회할까 ? swift에서 문자열을 정수 index로 조회하면 오류가 발생한다. 그러면 Swift에서는 어떤 방식으로 조회해야 할까 ? String.Index를 사용해서 접근한다. // 선언 let str = "hello world!" // 조회 str[str.startIndex] // 'h' str[str.endIndex] // '!'가 나올지 알았겠지만 에러 발생 var idx = str.index(str.startIndex, offsetBy: 6) str[idx] // 'w' // 반복문을 인덱스처럼 뽑아 사용하려면 indicies 메소드 사용 for i in str.indices { print(str[i]) // ..
📚 문자열 내 특정문자 변경 (치환) ReplacingOccurrences 문자열을 대체하여 새 문자열을 반환한다. - of target : 바꿀 문자열 - with replacement : 대체할 문자열 사용예시 let str = "Bye Nice to meet you" let result = str.replacingOccurrences(of: "Bye", with: "Hello") print(result) // "Hello Nice to meet you" of: 에 있는 "Bye"를 "Hello"로 변경하는 코드이다.
📚 문자열 처리 메소드 split components Split split메서드는 다양한 parameter를 지원한다. 각각의 역할은 다음과 같다. - separater : 쪼개려는 문자 단위 - maxSplits : 지정한 문자 단위로 얼마나 쪼갤지 - omittingEmptySubsequences : Bool값으로 결과값에서 빈 시퀀스의 포함 유무를 설정 참고 : https://zeddios.tistory.com/232 split은 말 그대로 문자열을 특정 문자 기준으로 쪼갤 수 있다. 반환형은 String타입을 [Substring]으로 반환하게 된다. 배열을 반환받게 되는 것이다. 또한 표준 라이브러리에 들어가있다. 때문에 바로 import Foundation을 할 필요없이 사용 가능하다. let ..
📚 고차함수 Map Filter Reduce 고차함수란 ? 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수 ( = 매개변수로 함수를 갖는 함수 ) Map ( 변형 ) 데이터를 변형하고자 할 때 사용한다. 기존 데이터를 변형하여 새로운 컨테이너를 만드는데, 기존 데이터는 변형되지 않는다. Map은 기존의 for-in 구문과 큰 차이가 없지만, 다음과 같은 이점이 있다. 코드의 간결성 재사용 용이 컴파일러 최적화 성능 좋음 map의 기본 형태 array.map(transform:T throws -> T) T타입의 transform을 받아 새로운 Txㅏ입의 컨테이너를 생성한다는 말이다. * 기존 for - in 구문 let numArray = [1,3,5,7,9] var multiArra..
📚 prefix suffix prefix 컬렉션의 초기 요소를 포함하는 지정된 최대 길이까지 하위 시퀀스를 반환한다. 최대 길이가 요소 수를 초과하는 경우 결과에는 컬렉션의 모든 요소가 포함된다. let numbers = [1, 2, 3, 4, 5] print(numbers.prefix(2)) // Prints "[1, 2]" print(numbers.prefix(10)) // Prints "[1, 2, 3, 4, 5]" 관련 문제 prefix 를 이용하여 푼다면 ? import Foundation func solution(_ my_string:String, _ n:Int) -> String { return String(my_string.prefix(n)) } 💡 my_string:prefix(n) 앞에..
📚 String 구조체이고 다른 언어와 같이 character가 모인 집합 Array() : 문자열 -> 배열 문자열의 요소 하나하나를 배열로 만드는 방법. let name: String = "SWIFT" let arrName = Array(name) print(arrName) // ["S","W","I","F","T"] count() , empty() : 문자열의 길이 구하기 let string: "A Unicode string value that is a collection of characters." print(string.count) // 58 let empty = "" print(empty.isEmpty) // true print(string.isEmpty) // false append() : ..
📚 배열의 다양한 메소드 정렬 sort() sorted() sort()는 기본적으로 '원본 배열'을 가지고 오름차순으로 정렬을 한다. 물론 내림차순으로도 정렬이 가능하다. 만약, 내림차순으로 정렬을 하고 싶다면, sort(by:)를 사용해서 sort(by:>)와 같이 작성해주면 된다. sort(by:)를 사용해서 오름차순으로 정렬하는 방법도 있다. 바로 sort(by:)로 작성해주면 된다. sort와 동일하게 sorted()만 작성해주면 오름차순으로 정렬된다. 코드예시 var arr = [ 1, 5, 2, 4, 3 ] // 기본 오름차순 정렬 var sotredArr = arr.sorted() print(arr) // [1, 5, 2, 4, 3] print(sortedArr) // [1, 2, 3, 4,..
생명주기 ( LifeCycle ) 생명주기라는 것은 앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 말한다. 앱의 상태는 앱이 현재 어떠한 것을 할 수 있는가를 결정한다. 앱의 생명주기 ( App's Life Cycle ) App의 생명주기는 APP의 실행/종료 및 App이 Foreground/Background 상태에 있을 때, 시스템이 발생시키는 event에 의해 App의 상태가 전환되는 과정을 말한다. 카카오톡 앱으로 카톡을 하고 있는 도중에 전화가 왔을 때 앱이 화면상에서 보여지지 않는 상태인 Background 상태와 앱이 화면에 올라와있는 상태인 Foreground 등과 같은 상태들을 정의한 것이다. iOS에서 앱을 실행하면 무슨 일이 벌어질까 ? iO..