본문 바로가기

모바일앱/Swift78

Swift - Enumerated() 사용하기 Enumerated()라는 메서드를 본적이 있을까?애플문서배열을 열거형으로 만들면서 배열의 index와 element를 파라미터로 리턴하는 메서드이다. 마찬가지로 문자열 자체를 열거형으로 변환하여도 동일하게 적용이 가능하다. let strArr = ["S", "w", "i", "f", "t"]for (n, c) in strArr.enumerated() { print("\(n): '\(c)'")}// Prints "0: 'S'"// Prints "1: 'w'"// Prints "2: 'i'"// Prints "3: 'f'"// Prints "4: 't'"for (n, c) in "Swift".enumerated() { print("\(n): '\(c)'")}// Prints "0: 'S'"/.. 2024. 8. 9.
Swift - 배열의 특정 두 요소를 교환하기 배열의 요소를 서로 교환하기배열에서 특정 요소 두개를 서로 교환하는 경우가 있다.이때, 교환할 요소가 i번째와 j번째라고 했을 때, 아래와 같이 3가지 방법이 있다.  1. 직접 교환임시 배열을 생성하여 교환할 값들을 저장하여, 원본 arr에 접근하여 변경let tempArr = [originArr[i], originArr[j]]arr[j] = tempArr[0]arr[i] = tempArr[1]  2. 튜플을 이용한 교환튜플을 사용하면 임시로 저장하는 공간없이 두 요소를 교환 가능하다.(resultArr[i], resultArr[j]) = (resultArr[j], resultArr[i])  3. swapAt(_: _:)메서드를 이용한 교환swapAt메서드의 파라미터는 원본 배열의 index가 들어간다.. 2024. 7. 31.
Swift - 참조(Strong, weak, unowned) 아주 간단한 예로 설명하자면.. 엄마와 나를 예로 들어보자.Strong엄마와 아이가 손을 꼭 잡고 있다고 가정해보자.엄마가 어디로 가든지 아이도 따라가야한다.엄마가 아이 손을 잡고 있으면, 아이는 어디에도 가지 않고 엄마와 함께 있는 것이다.Weak엉마와 아이가 손을 잡고 있다고 가정해보자.아이가 다른 곳에 가고 싶어하면 손을 놔줄 수 있다고 한다.아이가 어딘가 가고 싶다고 결정하면, 아이는 자유롭게 이동할 수 있고, 엄마와 아이가 잡은 손은 자연스럽게 분리된다.아이가 손을 놓고 이동하면, 엄마와 아이는 연결되어있지 않게 된다.Unowned엄마와 아이는 항상 같이 다닌다.엄마 없이는 절대 집을 나서지 않는다.만약 엄마가 여행을 가서 집을 비우면, 아이도 함께 가야한다.엄마가 없으면, 아이도 어디에도 갈 .. 2024. 6. 8.
swift signum() 메서드 이용하기 빠르게 양수와 음수 여부를 체크하는 경우,x > 0 처럼 체크하는 경우도 있지만x.signum() 으로 체크하는 방법 도 있다.signum() 메서드는 주어진 숫자의 부호를 나타내는 메서드다. 이 메서드는 수학적으로 숫자의 부호를 판별하여 그 결과를 반환한다.대부분의 프로그래밍 언어에서 사용할 수 있으며, 특히 수치 연산이 중요한 경우 유용하게 사용할 수 있다.signum() 메서드의 작동 방식:숫자가 양수일 경우, 1을 반환.숫자가 음수일 경우, -1을 반환.숫자가 0일 경우, 0을 반환.이 메서드는 숫자의 절대값을 확인하지 않고 오직 부호만을 고려하기 때문에, 부호에 따라 분기 처리를 해야 할 때 특히 유용하게 사용된다. 2024. 5. 30.
swift Array - 빠르게 빈 배열 만들기 Array - swift fast init Empty Array 반드시 배열의 타입을 명시해야 한다. 빈 배열은 세 가지 형태로 만들 수 있다. //let emptyArray = [] // error: 타입 명시가 돼 있지 않음. (형식 추론 X) let emptyArray: [Int] = []// 정식 문법 사용 let emptyArray2 = Array()// 단축 문법 사용 let emptyArray3 = [Int]() 2023. 1. 5.
클로저 톺아보기 Closure 톺아보기 클로저는 Named Closure와 Unnamed Closure로 나뉜다. 우리가 흔하게 사용하는 함수는 Named Closure다. 둘다 클로저에 포함되지만 우리가 통상적으로 부르는 클로저는 Unnamed Closure를 말한다. // 1. Named Closure func doSomthing() { print("do something!!!") } // 2. UnnamedClosure let doSomething = { print("do something!!!") } 결국 클로저와 함수는 그게 그것이기 때문에 1급객체의 성질을 가지고 있다. 즉 클로저도 아래의 성질을 갖고있다. 변수나 상수에 대입할 수 있다. 함수의 인자값으로 클로저를 전달할 수 있다. 함수의 반환값으로 클로저를.. 2022. 11. 27.
1급 객체 1급 객체 Swift는 객체지향, 함수형, 프로토콜 프로그래밍을 사용한다. 1급객체의 3가지 특징 변수나 상수에 대입할 수 있다. 함수의 반환값으로 자신을 사용할 수 있다. 함수의 인자값으로 자신을 사용할 수 있다. 이걸 함수에 대입하면 아래와 같다 1급객체함수의 3가지 특징 변수나 상수에 대입할 수 있다. 함수의 반환값으로 함수를 사용할 수 있다. 함수의 인자값으로 함수를 사용할 수 있다. 1. 변수나 상수에 대입할 수 있다. func checkContainStore(storeName: String) -> Bool { let storeArray = ["CU", "GS25", "ministop", "sevenEleven"] return storeArray.contains(storeName) ? true .. 2022. 11. 27.
프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 🍊 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) 프로퍼티 옵저버(Property Observers) 이전글에서 소개한 저장프로퍼티와 연산프로퍼티를 감시할 수 있다. Apple 프로퍼티 옵저버는 자신이 정의한 "저장 프로퍼티"에 추가 할 수 있으며, super class(부모클래스)를 상속한 프로퍼티에도 추가 할 수 있습니다. 프로퍼티 옵저버는 새로운 값이 프로퍼티의 현재값과 "동일하더라도" 속성의 값이 설정(set)될 때 마다 호출됩니다. lazy 저장 프.. 2022. 11. 25.
연산프로퍼티 - 프로퍼티(2) 연산프로퍼티 - 프로퍼티(2) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 🍊 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 이제 설명할 내용은 그중 연산프로퍼티다. 저장프로퍼티는 상수와 변수값을 인스턴스의 일부에 저장한다. 클래스와 구조체에서만 사용된다. 반면 연산프로퍼티는 값을 저장하기보다는 특정연산을 수행하여 값을 반환한다. 클래스와 구조체, 열거형에서 사용된다. 클래스, 구조체, 열거형 (Class, Struct, Enum)에.. 2022. 11. 22.
저장프로퍼티 - 프로퍼티(1) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 🍊 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 클래스나 구조체는 이 저장프로퍼티, 연산프로퍼티로 이루어지는 것이다. 연산프로퍼티는 열거형에서도 사용된다. 이제 설명할 내용은 그중 저장프로퍼티다. Stored Property 저장프로퍼티는 클래스와 구조체에서만 사용된다. 저장프로퍼티를 선언할 때는 저장할 기본값을 줄 수 있고, 이후 수정할 수 있다. 이때 사용되는 것이 변수와 상수이다. .. 2022. 11. 21.