전체 글 165

흐름 제어 (반복문)

for - in 구문 반복적인 데이터나 시퀀스를 다룰 때 사용 for - in 반복 구문의 활용 // 숫자 for num in 0...5 { print(num) } // 1 // 2 // 3 // 4 // 5 // 문자열 for letter in "Apple" { print(letter) } // A // p // p // l // e // 배열 for word in ["Apple", "Banana", "Melon"] { print(word) } // Apple // Banana // Melon ★ num, letter, word 를 임시 상수라고 하는데, 해당하는 값이 없다면? 와일드 카드 식별자 ( _ )를 사용 ★ 기본 데이터 타입의 for - in 반복 구문 사용 let myAddress: [St..

iOS/Swift 2024.01.12

흐름 제어 (switch 구문)

스위프트에서 switch 구문은 다음과 같은 특징이 있음 1. 소괄호 () 생략 가능 2. break 키워드는 선택 사항 (case 의 비교값을 비교하여 참이면 내부 코드 실행후 switch 구문 탈출) 3. switch 구문의 조건에는 다양한 타입의 값 입력 가능 4. 비교될 값이 명확한 경우 (열거형 값 등)가 아니라면? default 를 반드시 작성 switch 구문 기본 구현 let checkNumber: Int = 1000 switch checkNumber { case 0 : print("checkNumber의 값은 0입니다.") case 1...100: print("checkNumber의 값은 1부터 10 사이에 있습니다.") case 101...1000: print("checkNumber의 ..

iOS/Swift 2024.01.11

ViewController의 라이프 사이클

애플에서 제공하는 뷰 컨트롤러의 생명주기 ViewDidLoad: 뷰 컨트롤러를 만들 때 1번 호출 ViewWillAppear: 뷰가 곧 보일 때 호출되는 메서드 ViewDidAppear: 뷰가 보여진 뒤 호출되는 메서드 ViewWillDeappear: 뷰가 사라지기 직전에 호출되는 메서드 ViewDidDisappear: 뷰가 사라진 직후 호출되는 메서드 ★ 앱을 종료하는 것이 아니라 background foreground의 전환에는 뷰 컨트롤러 관련 메서드가 호출되지 않음 ★

iOS/UIKIT 2024.01.10

흐름 제어 (if 구문)

if 구문 스위프트의 if 구문은 조건의 값이 꼭 Bool 타입이어야 함 if 구문 기본 구현 var numA: Int = 10 var numB: Int = 101 if numA > numB { print("numA가 더 커요") } else { print("numB가 터 커요") } // numB가 더 커요 else if 구문은 개수에 상관없이 작성이 가능 else 블럭은 없어도 가능 먼저 else if 블럭의 조건이 맞으면, 블럭 내부의 코드를 실행 후 조건문 탈출 그 뒤에 ele if 블럭의 조건이 맞아도 실행 안됨 (else if 블럭 내의 조건을 소괄호를 묶는건 선택사항) var numA: Int = 10 var numB: Int = 101 if numA == numB { print("numA와..

iOS/Swift 2024.01.10

main storyboard (메인 스토리보드) 삭제하는 방법

먼저 프로젝트를 하나 생성 폴더명 표시줄에 "Main" 파일을 삭제 ("Main" 파일을 선택한 뒤 백스페이스로 파일 삭제 -> 이 때 Move to Trash 선택) info 파일을 선택한 뒤에 화살표가 가리키는 파일 삭제 "command" + "shift" + "f" 키를 누른 뒤에 검색창에 "main" 검색 (1번) 2번이 가리키는 파일 선택한 뒤에 3번 검색창에 "main" 검색 4번이 가리키는 파일 삭제 (파일 선택 뒤 백스페이스) SceneDelegate 파일 내 코드 수정 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { ..

iOS/UIKIT 2024.01.09

연산자

스위프트에서 연산자는 특정한 문자로 표현한 함수 연산자의 분류 분류 설명 예 단항 연산자 피연산자가 한 개인 연산자 !A 이항 연산자 피연산자가 두 개인 연산자 A + B 삼항 연산자 피연산자가 세 개인 연산자 A? B : C 전위 연산자 연산자가 피 연산자 앞에 위치하는 연산자 !A 중위 연산자 연산자가 피연산자 사이에 위치하는 연산자 A + B 후위 연산자 연산자가 피연산자 뒤에 위치하는 연산자 A! 연산자의 종류 할당 연산자 A = B A에 B라는 값을 할당 산술 연산자 + , - , * , / , % 같은 사칙연산 비교 연산자 두 값을 비교할 때 사용 ==, >= ,>, != 등의 비교연산 ★ "==" 와 "==="의 차이 ★ A == B : A와 B가 같은 값인지 비교하여 불리언 값을 반환 A ..

iOS/Swift 2024.01.09

라이브러리와 프레임워크

라이브러리 자주 사용될 기능들을 모아 놓은 도구 상자 같은 개념 개발자와 구현할 기능 사이에서 개발자가 구현할 기능을 쉽게 해줄 수 있도록 도와주는 중간 계층의미 프레임워크 프레임워크를 사용하려면 해당 프레임워크를 만든 사람이 설계해 둔 "기본 설계도" 같은 개념의 구조를 유지해야 함 "기본 설계도" 같은 개념을 지키면서 프레임워크를 사용하는 사용자가 원하는 기능을 구현할 수 있도록 확장 가능 설계의 기반이 되는 "기본 설계도" + 라이브러리 = 프레임워크 라이브러리와 프레임워크의 차이 프레임워크는 "기본 설계도" 또는 "의도된 제약 사항"이라 불리는 가이드라인을 준수하며 사용 라이브러리는 "도구 상자" 또는 "모음집"으로 즉, 도구와 같은 개념

정보/레벨 0 2024.01.08

데이터 타입 고급 4편 (열거형 2탄)

항목 순회 열거형에 포함된 항목을 알고 싶다면? 열거형 이름 뒤에 콜론(:)을 작성하고 CaseIterable 프로토콜을 채택 열거형에 allCases라는 이름의 타입 프로퍼티를 통해 모든 항목 확인 CaseIterable 프로토콜을 활용한 열거형의 항목 순회 enum Fruit: CaseIterable { case apple case banana case melon case kiwi } let allCases: [Fruit] = Fruit.allCases print(allCases) // [main.Fruit.apple, main.Fruit.banana, main.Fruit.melon, main.Fruit.kiwi] 만약에 원시값을 갖는다면? enum Fruit: String, CaseIterable ..

iOS/Swift 2024.01.08

데이터 타입 고급 4편 (열거형 1탄)

열거형은 연관된 항목들을 묶은 타입 프로그래머가 정의한 항목 외에는 추가 / 수정 불가 주로 다음과 같은 경우 사용 - 제한된 선택지 제공 - 정해진 값 외에 입력 제한 - 입력 값 한정 기본 열거형 키워드 enum으로 선언 각 항목 자체가 고유의 값임 Fruit 열거형의 선언 enum Fruit { case apple case banana case kiwi case melon } // 위와 같은 표현 (한 줄로도 작성 가능) enum Fruit { case apple, banana, kiwi, melon } Fruit 열거형 변수의 생성 및 값 변경 var myFruit: Fruit = Fruit.apple print(myFruit) // apple // 위의 코드와 같은 표현 var yourFruit..

iOS/Swift 2024.01.07