본문 바로가기

Swift 문법

(8)
[Swift] 옵셔널 2022. 7. 18. 21:09
옵셔널이라는 개념은 스위프트에서 최초로 도입되었다. 생소한 개념이라서 어렵다고 생각하는 경우가 많은데, 알고 보면 정말 도움되는 존재이다. 마치 자동차의 고장을 방지하는 윤활유 같은 존재랄까.. 일반 타입의 오류 발생 어떠한 변수를 선언하고 값을 초기화하지 않는다면 오류가 발생한다. 그리고 프로그램은 그 즉시 작동을 멈춘다. var a: Int print(a) // 에러 발생: a의 메모리에 저장된 값 없음 이러한 융통성 없는 오류를 발생시키지 않고, 일단 프로그램을 실행시킬 수 있는 것이 옵셔널이다. 옵셔널 타입을 잘 활용한다면, 보다 자유롭게 데이터 관리가 가능하다. 옵셔널 // 간편표기 var a: Int? print(a) // nil 출력 // 정식표기 var a: Optional print(a)..
[Swift] 클래스와 구조체 2022. 7. 17. 22:06
Swift의 Custom 타입에는 Enum, Class, Struct가 있다. iOS 개발 진입 장벽이 높다고 하는 수많은 이유 중 하나가 Swift의 Class와 Struct 때문이라고 생각한다. 반대로 Class와 Struct를 잘 이해한다면 앞으로의 iOS 개발에 큰 도움이 될 것이다. 클래스와 구조체 우선, 클래스(Class)와 구조체(Struct)를 서로 거의 비슷한 쌍둥이라고 생각하자. 클래스/구조체는 흔히 붕어빵 틀에 비유가 되곤 하는데, 여기서는 신문공장을 예로 들겠다. 우리는 신문공장을 Newspaper Class/Struct라고 부른다. 공장은 아래와 같이 생겼다. // 구조체로 선언하려면 class를 struct로 변경만 해주면 됨 class Newspaper { var title..
[Swift] Enum(열거형) 2022. 7. 16. 22:45
Swift에는 Int, Double, String, Bool과 같이 처음부터 내장되어있는 기본타입이 있다. 그리고 개발자가 직접 타입을 만들 수도 있는데 이를 커스텀 타입 또는 사용자 정의 타입이라고 한다. 커스텀 타입에는 Enum, Class, Struct가 있다. 그 중에서 열거형 타입인 Enum에 대해서 알아보자. Enum 타입 타입 자체를 한정된 사례(case) 안에서 정의할 수 있는 타입이다. 예를 들면, 요일(월화수목금토일), 행성(수금지화목토천해), 가위바위보를 정의할 수 있다. Enum 타입의 기본 형식은 다음과 같다. enum Weekday { case monday case tuesday case wednesday case thursday case friday case saturday c..
[Swift] 함수 2022. 7. 15. 18:37
코딩에서 가장 많이 사용하는, 그리고 오류도 많이 발생하는, 하지만 가끔은 편리한, 코딩의 꽃! 함수에 대해 알아보자 함수의 장점 반복되는 코드 재사용 가능 미리 함수를 정의하고 나면, 쉽게 사용만 하면 됨 함수의 기본 형태 함수를 활용하기 위해서는 정의와 호출을 알고 있어야 한다. 기본적인 함수 정의와 호출정의한 함수를 호출하면 함수 내부의 실행문이 실행된다. // 정의 func someFunction() { print("이 형식이 기본적인 함수 정의이다.") } // 호출 someFunction() 함수의 Input과 Output 함수는 Input 값과 Output 값을 가질 수 있는데, 각 경우에 따라서 코드 형식이 약간 달라진다. 1. Input 값과 Output 값 모두 없는 경우 // 정의 f..
[Swift] 튜플 2022. 7. 14. 22:42
튜플은 집단자료형 타입이다. 여러 요소를 담을 수 있다는 점에서 배열과 비슷하게 볼 수 있다. 이 둘의 차이를 러프하게 생각한다면, 배열은 여러가지 요소들을 담는 목적이 더 강한 '가방'과 같고, 튜플은 담긴 요소들에 접근하여 연계하는 활용성이 큰 '비닐봉지'와 같다. 음.. 비유는 비유일 뿐 큰 의미를 두지 말자... 먼저, 튜플에 대해서 자세하게 알아보자. 튜플은 집단자료형 타입으로, 연관된 데이터의 조합으로 어떠한 형태든 만들 수 있는 타입이다. let person: (String, Stirng, Int) = ("홍길동", "남자", 28) // 타입 추론 가능 튜플 내부 데이터 접근은 다음과 같다. print(person.0) // "홍길동" 출력 print(person.1) // "남자" 출력 ..
[Swift] Switch문 2022. 7. 13. 22:27
switch문은 if문보다 조건의 범위가 한정적일 때 쓰인다. 조건을 부등식이 아닌 오로지 " == "으로만 비교한다. 한마디로 "너 이거 맞아? 아니야?" 이런식이다. 예시를 들어보겠다. var drink: String = "포카리스웨트" switch drink { case "포카리스웨트": print("포카리스웨트를 선택") case "게토레이": print("게토레이를 선택") default: break } 변수 drink의 값이 case의 값과 일치하면 해당 실행문을 실행한다. switch문은 모든 경우의 수를 다루어야 한다. 따라서 case문으로 모든 경우의 수를 다룰 수 없다면 default 키워드를 사용하여 나머지 경우를 다룬다. switch문에서는 실행문을 공백으로 둘 수 없고, 그러한 경..
[Swift] 연산자 팁 2022. 7. 12. 17:46
Swift에서는 다음의 연산을 지원하지 않는다. 10
[Swift] 변수와 타입 2022. 7. 11. 21:06
변수는 어떠한 메모리 공간의 이름이다. 그리고 코딩의 대부분 과정에서 변수가 활용된다. 하나의 예로 어플을 실행시키면, CPU와 RAM이 최초로 하는 작업은 값을 메모리에 저장하는 일이다. RAM의 메모리에는 값(데이터)를 담을 수 있는 상자들이 있다. 그리고 ‘변수’는 RAM의 데이터 상자의 이름이라고 생각하면 된다. 코드를 예로 들어보겠다. var something = 1 ‘something’이라는 데이터 상자에 ‘1’이라는 값을 할당했다. var와 let 변수명 앞에는 ‘var’ 또는 ‘let’ 키워드를 명시해주어야 한다. var로 선언한다면 데이터 상자에 담는 값이 바뀌어도 된다. 이 때, 데이터 상자를 ‘변수'라고 부르며 데이터를 ‘mutable’하다고도 한다. let으로 선언한다면 데이터 상자..