야곰님의 스위프트 프로그래밍 책으로 공부한 내용을 잊어버리지 않게 간단하게 정리한 글입니다.
관련 포스트
[Swift] 스위프트 프로그래밍 - Part1 - 1 : 스위프트? / 스위프트 장점 / 특징 / 명명 규칙 / 콘솔 로그 / 주석
[Swift] 스위프트 프로그래밍 - Part1 - 2 : 변수 / 상수 / 데이터 타입 기본 (Int, Bool, Float, Character, String, Any, AnyObject, nil)
[Swift] 스위프트 프로그래밍 - Part1 - 3 - 1 : 데이터 타입 고급 (Tuple, Array, Dictionary, Set)
[Swift] 스위프트 프로그래밍 - Part1 - 3 - 2 : 데이터 타입 고급(열거형 enum)
책 범위 : Part 1. 스위프트 기초 1 (3. 데이터 타입 기본)
1. 변수와 상수
변수
- var 키워드 사용
- var [변수명]: [데이터 타입] = [값]의 형태로 선언
- 데이터 타입은 생략 가능(컴파일러가 변숫값의 타입을 추론하여 지정함 - 비추)
- 변할 수 있는 값 -> 값 변경 가능
var name: String = "minha"
var age: Int = 26
var num = 4 //타입 추론 사용
age = 100 //변수는 값 변경 가능
print("제 이름은 \(name)이고, 나이는 \(age)살 입니다. 좋아하는 숫자는 \(num)입니다.")
//제 이름은 minha이고, 나이는 100살 입니다. 좋아하는 숫자는 4입니다.
상수
- let 키워드 사용
- let [상수명]: [데이터 타입] = [값]의 형태로 선언
- 타입 생략 가능
- 항상 같은 값 - 변하지 않는 값 -> 값 변경하면 오류
let maxInputValue: Int = 100
let firstName:String = "Gwon"
2. 데이터 타입 기본
데이터 타입(자료형)은 프로그램 내에서 다뤄지는 데이터의 종류
모든 데이터 타입 이름은 첫 글자가 대문자로 시작하는 대문자 카멜 케이스 사용
기본 데이터 타입은 구조체를 기반으로 구현되어 있음
2-1. Int, UInt
정수 타입
Int : +, - 부호를 포함한 정수
UInt : - 부호를 포함하지 않은 0을 포함한 양의 정수
최댓값과 최솟값은 max, min 프로퍼티로 알아볼 수 있음
print("Int min : \(Int.min), Int max : \(Int.max)")
//Int min : -9223372036854775808, Int max : 9223372036854775807
8비트, 16비트, 32비트, 64비트의 형태가 있음 (Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64)
Int와 UInt는 다른 타입임
2-2. Bool
불리언 타입
참(true), 거짓(false)만 값으로 가짐
var boolean:Bool = true
boolean.toggle() //true-false 반전
2-3. Float, Double
부동소수점을 사용하는 실수, 부동소수 타입
정수 타입보다 훨씬 넓은 범위의 수를 표현할 수 있음
32비트의 부동소수 표현 Float, 64비트의 부동소수 표현 Double
* 임의의 수 만들기
randon(in: ) 메서드
var randomInt: Int = Int.random(in: -100...100)
var randomDouble: Double = Double.random(in: 5.0...10.5)
var randomFloat: Float = Float.random(in: -0.5...5)
print(randomInt)
print(randomDouble)
print(randomFloat)
//-28
//9.606418804174888
//0.22616017
2-4. Character
단 하나의 문자를 의미
값의 앞 뒤에 큰따옴표 사용해 표현 "값"
2-5. String
문자열
값의 앞 뒤에 큰따옴표 사용해 표현 "문자열"
//이니셜라이저를 사용해 빈 문자열을 생성할 수 있음
var introduce: String = String()
//append() : 문자열 이어 붙이기
introduce.append("제 이름은")
//+ 연산자로 문자열 이어 붙이기
introduce = introduce + " " + name + "입니다"
introduce += "!!"
print(introduce) //제 이름은 minha입니다.!!
//count 프로퍼티를 이용해 문자열 길이 확인
print(introduce.count) //16
//isEmpty 프로퍼티를 이용해 빈 문자열인지 확인
var isEmptyString: Bool = false
isEmptyString = introduce.isEmpty
print(isEmptyString) //false
//연산자를 통한 문자열 비교
let hello: String = "Hello"
var isSameString: Bool = false
isSameString = hello == "Hello"
print(isSameString) //true
isSameString = hello == "hello"
print(isSameString) //false
//메서드를 통한 접두어 접미어 확인
var hasPrefix: Bool = false
hasPrefix = hello.hasPrefix("He")
print(hasPrefix) //true
hasPrefix = hello.hasPrefix("he")
print(hasPrefix) //false
var hasSuffix: Bool = false
hasSuffix = hello.hasSuffix("llo")
print(hasSuffix) //true
hasSuffix = hello.hasSuffix("LLO")
print(hasSuffix) //false
//메서드를 통한 대소문자 변환
var convertedString: String = ""
convertedString = hello.uppercased()
print(convertedString) //HELLO
convertedString = hello.lowercased()
print(convertedString) //hello
//코드상에서 여러 줄의 문자열을 직접 쓰고 싶다면 큰따옴표 3개 사용
//""" 쓰고 한 줄 내려쓰고, 마지막도 한 줄 내려서 """
introduce = """
안녕하세요!
Hello!
반가워요!
"""
print(introduce)
//안녕하세요!
//Hello!
//반가워요!
코드에 있는 기능 외에도 더 많은 메서드와 프로퍼티가 제공됨
2-6. 특수문자
문자열 내에서 일정 기능을 함(제어 문자라고도 함)
모두 백슬래시에 특정한 문자를 조합해 사용
특수문자 | 설명 |
\n | 줄바꿈 |
\\ | 문자열 내에서 백슬래시를 표현할 때 사용 |
\" | 큰따옴표를 표현할 때 사용 |
\t | 탭 문자. 탭키를 눌렀을 때와 같은 효과 |
\0 | 문자열이 끝났음을 알리는 null 문자 |
2-7. Any, AnyObject, nil
Any : 모든 데이터 타입을 사용할 수 있다는 뜻(어떤 종류의 데이터 타입이든지 상관없이 할당)
AnyObject : 클래스의 인스턴스만 할당 (9장 구조체와 클래스에서 자세히)
nil
- 없음을 나타내는 키워드
- 변수 또는 상수에 값이 들어있지 않고 비어있음을 나타내는 데 사용
- nil인 변수 또는 상수에 접근했을 때 잘못된 메모리 접근으로 런타임 오류 발생(Null Point Exception) (8장 옵셔널에서 자세히)
Never : 특정 함수의 반환 타입으로 사용될 수 있는 타입 (7장 종료되지 않는 함수에서 자세히)
참고
아래를 참고해 정리한 내용입니다.
스위프트 프로그래밍 3판(야곰) - 한빛미디어
'iOS' 카테고리의 다른 글
[iOS - MongoDB Realm] 2. Get Started - Introduction to MongoDB Realm for Mobile Developers (0) | 2020.12.09 |
---|---|
[iOS - MongoDB Realm] 1. MongoDB Realm (0) | 2020.12.09 |
[Swift] 스위프트 프로그래밍 - Part1 - 1 : 스위프트? / 스위프트 장점 / 특징 / 명명 규칙 / 콘솔 로그 / 주석 (0) | 2020.11.05 |
[iOS - Swift] 공부할 것 (0) | 2020.05.12 |
[Swift] iOS 개발과 Swift 관련 참고 및 정리 (0) | 2020.03.04 |
댓글