본문 바로가기

🍎 Swift76

[강의노트👩🏻‍💻] ViewController 생명주기 이론 init 뷰 컨트롤러를 생성했다 (생성자) loadViewViewController가 반드시 가지게 되는 ViewView의 속성에 해당하는 View를 수동으로 생성하고 초기화 할 수 있는 책임을 갖는 생명주기다메모리에 올라가기 전 사전 세팅을 마칠 수 있다 ViewDidLoadView가 메모리 위에 올라온다(유저 눈으로 확인이 가능한 바로 전 단계)유효한 프레임값을 얻을 수 없다한번만 호출 된다 ViewWillAppear뷰 컨트롤러의 뷰가 뷰 계층에 추가되기 직전에 호출됨여러번 호출 될 수 있다View가 나타나고 있다(현재 진행형)예를들면, 뷰가 등장할 때 마다 새로운 화면을 보여주고 싶어! ViewIsAppearing유저 눈에 보이고 있음 ViewDidAppearView가 정말로 나타난다유저 눈으로 볼.. 2024. 7. 9.
[🍎 Swift 문법] sort 와 sorted sort() 함수원본 배열을 오름차순으로 정렬해준다(직접 수정)내림차순으로 정렬 시 sort(by: >)를 사용한다 오름차순var numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]numbers.sort()print(numbers) // 출력: [1, 1, 2, 3, 4, 5, 5, 6, 9] 내림차순var numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]numbers.sort(by: >)print(numbers) // 출력: [9, 6, 5, 5, 4, 3, 2, 1, 1] sorted() 함수원본 배열을 건드리지 않고 복사본을 만들어서 오름차순으로 정렬한 후 정렬된 요소를 반환한다(사본 생성)사본 생성 시 메모리를 많이 먹게 되므로 원본 배열이 중요한 경우 sor.. 2024. 7. 9.
[👾 Programmers] 25. 나누어 떨어지는 숫자 배열 1. 문제 설명 (📎Link)array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 2. 제한사항arr은 자연수를 담은 배열입니다.정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.divisor는 자연수입니다.array는 길이 1 이상인 배열입니다.📝 문제func solution(_ arr:[Int], _ divisor:Int) -> [Int] { return 0}  💻 내가 푼 방법 전체 코드func solution(_ arr:[Int], _ divisor:Int) -> [Int] .. 2024. 7. 9.
[👾 Programmers] 24. 서울에서 김서방 찾기 1. 문제 설명 (📎Link)String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.2. 제한사항seoul은 길이 1 이상, 1000 이하인 배열입니다.seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다."Kim"은 반드시 seoul 안에 포함되어 있습니다. 📝 문제func solution(_ seoul:[String]) -> String { return 0}  💻 내가 푼 방법 및 풀이 전체 코드func solution(_ seoul:[String]) -> String { fo.. 2024. 7. 8.
[Snapkit] offset & inset 1. translatesAutoresizingMaskIntoConstraints = false Snapkit은 iOS 개발에서 오토 레이아웃을 쉽게 적용할 수 있게 해주는 라이브러리이다 Snapkit을 사용하여 제약조건을 설정하는 경우 이 속성을 수동으로 설정할 필요가 없으며,Snapkit이 translatesAutoresizingMaskIntoConstraints 속성을 자동으로 false로 설정하여 사용하는데 필요한 준비 작업을 대신 처리한다translatesAutoresizingMaskIntoConstraints = false  2. Offset특정 제약 조건의 기준점으로부터의 거리(간격)를 설정한다예를 들면 어떤 뷰가 다른 뷰의 바로 옆에 위치하고 싶을 때 사용하며 기준점에서 멀어지는 방향으로 적.. 2024. 7. 1.
[Swift 🍎] Snapkit 활용하기 snapkit 이란?코드베이스 UI 작성 시 제약조건 세팅하는 코드를 Snapkit을 활용해서 조금 더 간결하게 작성할 수 있게 하는 서드파티 라이브러리 아래와 같이 길어서 보기 힘든 코드를 ⤵️ 요렇게 줄일 수 있다! 엑스코드에 snapkit 추가하기!1. 구글에 Swift snapkit 검색2. 깃 허브 공식문서 클릭 후 깃 url 복사 3. 프로젝트 파일 → TARGETS → General → Frameworks, Libraries .... → +(추가)  4. Add Package Dependency 5. 돋보기에 복사한 Git URL 복사 → Add Package 6. xcode 에서 snapkit이 추가된 것을 확인할 수 있음 2024. 6. 30.
[강의노트] 코드베이스 파일 만들기 코드베이스란? 코드베이스란 스토리보드 같은 인터페이스 빌더를 사용하지 않고, 코드 작성으로만 UI 구성을 하는 것이다스토리보드에서 하던 뷰의 size, constraint 및 모든 속성들을 코드로 작성한다팀끼리 협업할 때, github에 코드를 올리고 서로 코드 리뷰를 하게 되는데, 스토리보드로 작성한 UI 를 github에 올린 것보다, swift로 작성한 UI 코드를 github에 올린 것이 가독성이 더 좋다다만 스토리보드처럼 눈에 보이는 상태로 UI를 구성하는 것이 아니기 때문에, 코드 베이스로 UI를 작성하면 반드시 실행시켜서 확인해야 한다는 단점이 존재. 1.  스토리보드 연결 끊기1️⃣ Main 클릭 + 백스페이스 → Move to Trash2️⃣ Info → Main 스토리보드 클릭 + 백스.. 2024. 6. 30.
[👾 Programmers] 23. 콜라츠 추측 1. 문제 설명 (📎Link)1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.  예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다.위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요.단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요... 2024. 6. 28.
[👾 Programmers] 22. 두 정수 사이의 합 1. 문제 설명 (📎Link)두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 2. 제한사항a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다.📝 문제func solution(_ a:Int, _ b:Int) -> Int64 { return 0}  💻 내가 푼 방법 1) 오류 발생  a와 b가 같은 경우도 있으므로 Guard 문으로 조건을 걸러줌 → 실패  2) a가 b보다 커질 경우도 있을 수 있다 → 경우를.. 2024. 6. 28.
[🍎 Swift 문법] 제어문 전환 명령어 제어문 전환 명령어란?제어문 전환 명령어는 프로그래밍에서 코드의 흐름을 변경하거나 특정 조건에서 빠져나갈 수 있게 해주는 명령어다코드의 흐름을 제어하여 프로그램이 원하는 대로 동작하도록 하는 데 유용하게 사용된다스위프트에서 주요 제어문 전환 명령어는 break, continue, return, fallthrough, throw가 있다 break반복문이나 switch 문을 즉시 종료한다continue현재 반복 주기를 건너뛰고 다음 반복으로 넘어간다return함수를 종료하고 값을 반환한다fallthroughswitch문에서 다음 case 블록으로 넘어간다throw오류를 던져 예외 처리를 수행한다 01. break break는 반복문이나 switch 문을 즉시 종료한다이 코드는 1부터 4까지 출력하고, i가 .. 2024. 6. 27.
[🍎 Swift 문법] if let & guard let 변수에 값이 있을지 없을지 모르는 상황에서는 Optional을 사용하고,그 값을 안전하게 가져오기 위해 Optional Binding을 사용해서 값을 Unwrapping 한다 여기서 옵셔널 값을 안전하게 추출하기 위해 if let & guard let을 사용한다 01. if let값이 있는 경우와 값이 없는 경우(nil)를 체크한다let 상수에 옵셔널로 할당된 값을 할당함으로서 옵셔널을 벗기는 작업을 진행한다 if let은 옵셔널 바인딩으로 특정 값이 존재하는지 확인하고, 그 값이 존재하는 경우에만 특정 코드를 실행하도록 한다//변수 optionalValue를 Int옵셔널로 선언var optionalValue : Int?//'2' 라는 값이 있어도 없을 수 있는 경우를 대비해 Optinal(2)로 출력됨.. 2024. 6. 27.
[👾 Programmers] 21. 하샤드 수 1. 문제 설명 (📎Link)양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다.자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 2. 제한사항n은 1이상 10000 이하인 자연수입니다.📝 문제func solution(_ x:Int) -> Bool { return true}  💻 내가 푼 방법(테스트 성공)func solution(_ x:Int) -> Bool { //들어온 양의 정수 x를 개별적인 정수로 나눠주기 위해 String으로 형변환 var str = String(x) //str값에 map함수 적.. 2024. 6. 26.