📖 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
: 소수점 이하 자리가 없는 수 즉, 정수를 저장하기 위해 사용
Int8, Int 16, Int32, Int 64
UInt8, UInt16, UInt 32, UInt 64
와 같은 데이터 타입 있음
모든 정수형 타입은 해당 데이터 타입이 지원하는 최댓값과 최솟값을 알 수 있도록 범위 속성을 가지고 있다.
Int32.min
Int32.max
: 소수점이 있는 값을 저장할 수 있는 데이터 타입
저장될 값의 크기와 소수점 이하의 값을 얼마나 정확하게 표현해야 하느냐에 따라 사용
: 참/거짓(또는 1과 0)을 처리하는 목적의 데이터 타입
: 문자, 숫자, 문장 부호, 기호와 같은 하나의 문자를 저장하는 데이터 타입
그래핌 클러스터(grapheme cluster) 형태로 저장된다.
var myChar = “\u{0058}”
유니코드를 이용하여 변수에 문자를 할당할 수 있다.
: 단어나 문장을 구성하는 일련의 문자를 담는 데이터 타입
저장 메커니즘, 문자열 검색, 매칭, 연결, 수정 등의 다양한 문자열 편집 기능 제공
문자열 보간 (String Interpolation)
: 변수, 상수, 표현식, 함수 호출을 조합하여 구성할 수 있다.
var hello: String = "HELLO"
var name: String = "ybeeeen"
print("\(hello), \(name)!")
기본적으로 역슬래시( \ )가 앞에 붙은 문자는 특수 문자로 간주되어 처리된다.
\n // 개행
\r // 캐리지 리턴
\t // 탭
\\ // 역슬래시
\” // 쌍따옴표
\’ // 홑따옴표
\u{nn} // 한 바이트 유니코드 스칼라
// nn은 유니코드 문자를 표현하는 두 개의 16진수
\u{nnn} // 두 바이트 유니코드 스칼라
// nnn은 유니코드 문자를 표현하는 네 개의16진수
\u{nnnnnnnn} // 네 바이트 유니코드 스칼라
// nnnnnnnn은 유니코드 문자를 표현하는 여덟 개의 16진수
변수 Variable
상수 Constant
변수 - var
상수 - let
애플은 코드의 효율성과 실행 성능의 향상을 위해서 가능하면 변수보다 상수 사용을 권장한다.
let sayHello: String = "Hello"
var name: String = "ybeeeen"
print("\(sayHello), \(name)") // Hello, ybeeeen
// sayHello = "Hi" // 불가능
name = "yubeen"
print("\(sayHello), \(name)") // Hello, yubeen
Type Safe 언어는 변수의 데이터 타입이 한번 정해지면 다른 타입의 데이터를 담을 수 없다.
Loosely Typed 언어는 변수 선언 후에 다른 데이터 타입을 저장할 수 있다.
var userCount: Int = 10
var signalStrength = 2.231
let companyName = “My Company”
signalStrength는 Double 타입으로,
companyName은 String 타입으로 추론된다.
타입 선언 없이 상수를 선언할 경우에, 반드시 선언 시점에서 값을 할당해야 한다.
하지만 타입 선언을 할 경우에는 나중에 값을 할당해도 된다.
: 여러 값을 하나의 항목으로 임시적으로 그룹핑하는 매우 간단한 방법.
서로 다른 값들이 튜플에 저장될 수 있다.
let myTuple = (10, 432.123, “This is a String”)
myTuple.1
let (myInt, myDouble, myString) = myTuple
선택적 추출도 가능
var (myInt, _, myString) = myTuple
let myTuple = (count: 10, length: 432.123, message: “This is a String”)
myTuple.message
앱에서 주로 함수에서 리턴값으로 여러 개를 묶어보낼 때 튜플 사용
옵셔널 데이터 타입은 대부분 다른 프로그래밍 언어에 없는 새로운 개념.
목적
: 변수 또는 상수에 값이 할당되지 앟은 상황을 처리하기 위해 안전하고 일관된 접근 방식을 제공하는 것.
옵셔널 선언
: 변수를 선언할 때 데이터 타입 선언 다음에 “?” 문자를 두어 옵셔널로 선언
var index: Int?
index 변수에는 정숫값이 할당되거나 아무런 값도 할당되지 않을 수 있다.
값이 할당되지 않은 옵셔널인 경우 실제로 nil 값을 가짐.
var index: Int
if index != nill {
// 값 할당 o
} else {
// 값 할당 x
}
옵셔널에 값이 할당되어 있다면 ‘래핑되었다(wrapped)’라고 말한다.
옵셔널 값 사용
: 옵셔널 안에 래핑된 값을 사용할 때는 강제 언래핑(forced unwrapping) 개념을 이용한다.
강제 언래핑
: 래핑된 옵셔널 이름 뒤에 느낌표를 두면 강제로 값을 추출하여 사용할 수 있다.
var index: Int
index = 3
var treeArray = [“Oak”, “Pine”, “Yew”, “Birch”]
if index != nil {
print(“treeArray[index!]”)
} else {
print(“index does not contain a value”)
}
if let constantname = optionalName {
}
if var variablename = optionalName {
}
위 코드는 두 가지 작업을 수행한다.
var index: Int?
index = 3
var treeArray = [“Oak”, “Pine”, “Yew”, “Birch”]
if let myValue = index {
print(treeArray[myValue])
} else {
print(“index does not contain a value”)
}