본문 바로가기

분류 전체보기64

반복문 for ~ in while repeat ~ while for ~ in 구문 for ~ in 구문의 기본 형태 for item in items { /* 실행 구문 */ } for ~ in 구문의 사용 var myNumber: [Int] = [1,2,3,4,5] for item in myNumber{ print("배열 내 데이터 : \(item)") } /* 배열 내 데이터 : 1 배열 내 데이터 : 2 배열 내 데이터 : 3 배열 내 데이터 : 4 배열 내 데이터 : 5 */ 컬렉션의 딕셔너리 경우 item은 key와 value로 구성된 튜플 타입이다. var mathScore = ["jerry" : 100, "mike": 90, "john" : 85, "tom" : 70] for (name, score).. 2024. 3. 26.
조건문 if ~ else switch if ~ else 구문 if ~ else 구문의 기본 형태 if 조건 { /* 실행 구문 */ } else if 조건 { /* 실행 구문 */ } else { /* 실행 구문 */ } if ~ else 의 사용 스위프트의 조건에는 항상 Bool 타입으로 들어와야 한다. 즉, myNumber 100 { print("100 보다 커요") }.. 2024. 3. 26.
변수, 상수명 잘 짓기 ⭐️ 변수명, 상수명 또는 클래스 명 을 만들 때는 제일 중요한 건 다른 사람이 코드를 볼 때 읽기 편하고, 이해하기 쉬워야 한다. ⭐️ 이해하기 쉬운 코드를 위해서는 1. 특정한 단어를 고르기 2. 의미 없는 단어 피하기 3. 이름은 얼마나 길어야 되는가? SMART 한 방법으로 변수 이름 짓기 ▶️ easy to Search : 검색하기 쉽다 ▶️ easy to Mix : 조합하기 쉽다 ▶️ easy to Agree : 수긍하기 쉽다. ▶️ easy to Remember : 기억하기 쉽다. ▶️ easy to Type : 입력하기 쉽다. ▶️ easy to Search : 검색하기 쉽다 상위 카테고리의 이름을 앞에 붙인다. 서버를 통해 데이터를 받을 때, 지연 시간 초과로 인한 에러에 대한 변수명을 .. 2024. 3. 22.
함수 고급 매개변수 기본 값 매개변수에 기본적으로 전달될 값을 미리 지정할 수 있다. ⭐️ 기본값을 갖는 매개변수는 매개변수 목록 중에 뒤 쪽에 위치하는 것이 좋다. func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 = 매개변수 기본값 ...) -> 반환타입 { /* 함수 구현부 */ return 반환값 } 예: friend 라는 매개변수에는 기본값이 없고, me 라는 매개변수에는 기본값을 할당 함수 func greeting(friend: String, me: String = "mike") { print("Hello \(friend)! I'm \(me)") } greeting 함수를 호출하면? greeting(friend: "jerry") // Hello jerry! I'm mike .. 2024. 3. 22.
함수 함수의 선언 기본형태 func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { /* 함수 구현부 */ return 반환값 } 예: 두 개의 정수를 받아서 더한 값을 정수로 반환하는 함수 func sum(a: Int, b: Int) -> Int { return a + b } 반환 값이 없는 함수 반환 값이 없을 경우에는 반환 타입에 Void를 설정하거나, 반환 타입을 생략할 수 있다. func 함수이름(매개변수1이름: 매개변수1타입, 매개변수2이름: 매개변수2타입 ...) -> Void { /* 함수 구현부 */ return } 예: 매개변수 name에 String 타입의 값을 입력 받아 이름을 출력하는 함수 func printMyName(name: Str.. 2024. 3. 22.
컬렉션 타입 Array: 순서가 있는 리스트 컬렉션 Dictionary: 키와 값의 쌍으로 이루어진 컬렉션 Set: 순서가 없고, 멤버가 유일한 컬렉션 Array 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입이다. var someArray: [String] = [] var someArray1: [String] = Array() print(type(of: someArray)) // Array print(type(of: someArray1)) // Array Array 활용 만약에 someArray라는 배열을 선언할 때 "let" 키워드로 하면 수정이 안된다. // 요소 추가 someArray.append("apple") someArray.append("banana") print(someArray) // ["a.. 2024. 3. 21.
기본 데이터 타입 Bool Int, UInt Float, Double Character, String Bool true와 false 만을 값으로 가지는 타입 var someBool: Bool = true someBool = false print(someBool) // false Int, UInt Int 정수 타입, 현재는 기본적으로 64비트 정수형 var someInt: Int = -100 someInt = 100 // someInt = 100.2 오류 발생 UInt 양의 정수 타입, 현재는 기본적으로 64비트 양의 정수형 var someUInt: UInt = 100 // someUInt = -100 오류 발생 Float, Double Float 실수 타입, 32비트 부동소수형 실수는 정수를 포함하기 때문에 Int 타입의.. 2024. 3. 21.
상수, 변수 상수 선언 키워드: let 변수 선언 키워드: var 선언 방식 let 이름: 값의 타입 = 값 var 이름: 값의 타입 = 값 값의 타입이 명확하다면 타입은 생략 가능 let constant: String = "차후에 변경이 불가능한 상수 let" var variable: String = "차후에 변경이 가능한 변수 var" var booleanValue = true 상수, 변수 선언 후에 나중에 값 할당하기 let sum: Int var inputValue1: Int = 200 var inputValue2: Int = 300 // sum 선언 후 할당 sum = inputValue1 + inputValue2 print(sum) // 500 // sum = 200 // 오류 발생 변수(var 선언)는 .. 2024. 3. 21.
클로저 - @autoclosure 클로저 - @autoclosure 파라미터로 전달된 일반 구문 또는 함수를 클로저로 래핑(Wrapping) 한다는 의미이다. 즉, @autoclosure가 붙은 경우에는 일반 구문을 인자값으로 넣어도 컴파일러가 알아서 클로저로 만들어준다. 아래 코드는 클로저가 어떻게 판단을 지연하는지 보여준다. 클로저 내부의 코드에 의해 fruits 배열의 첫 번째 요소는 삭제 되지만, 클로저가 실제로 호출되기 전까지 삭제되지 않습니다. var fruits: [String] = ["Apple", "Banana", "Kiwi", "Melon"] let fruitsCheck = { fruits.removeFirst()} print(fruits.count) // 4 print("삭제 아이템: \(fruitsCheck())").. 2024. 3. 20.
클로저 클로저란? 클로저는 코드의 블럭이다. 일급 시민으로 전달인자, 변수, 상수 등으로 저장, 전달이 가능하다. ⭐️ 일급시민(frist citizen) 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원한다. 함수는 클로저의 일종으로, 이름이 있는 클로저라고 생각하면 된다. 기본 클로저 문법 { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저의 사용 아래에서 보면 (String) → String 을 통해 String 타입의 매개변수를 받아 String을 반환하는 함수 타입이라는 걸 알려준다. (클로저는 이름 없는 함수이다.) { ... } 이 부분이 바로 클로저이다. // sayHello라는 상수에.. 2024. 3. 20.
xcode에서 오픈소스를 어떻게 사용하나? 오픈소스 이용 먼저 구글에 "awesome swift" 검색 https://github.com/matteocrippa/awesome-swift?tab=readme-ov-file#hud GitHub - matteocrippa/awesome-swift: A collaborative list of awesome Swift libraries and resources. Feel free to contribute! A collaborative list of awesome Swift libraries and resources. Feel free to contribute! - matteocrippa/awesome-swift github.com 먼저 terminal을 연다. (command + space를 통해 term.. 2024. 3. 19.
컴플리션 핸들러 - 비동기 처리 (함수가 끝난 후 결과 알려줄 때) 컴플리션 핸들러 (Completion Handler) 이란? 어떠한 작업이 완료된 이후에 진행되는 작업을 담당한다. ▶️ 작업이 끝나면 "return" 키워드를 통해 전달하는 게 아니라 클로저로 전달해야 한다. (return: 비동기 작업을 기다리지 않고, 바로 반환하기 때문에 "nil" 이 나온다.)◀️ ▶️ 클로저는 주로 비동기 작업에 많이 사용된다. 그래서 비동기적인 어떠한 태스크가 끝나고 나서 수행해야 할 블록을 클로저로 작성하면 편리하다. ◀️ 컴플리션 핸들러는 어떻게 사용하나? doSomething 메서드 내부에 DispatchQueue를 통해 print() 메서드 동작에 딜레이를 적용했다. (딜레이를 적용하여 비동기 상황을 재연함) import UIKit class ViewController.. 2024. 3. 19.