브래의 슬기로운 코딩 생활
iOS프로그래밍기초 4주차 정리 본문
자료형의 종류
- Bool, Character, Int, Float, Double, String, Void
자료형의 크기는 플랫폼 마다 다르다.
일반적으로 초기값을 주지 않을 경우에만 자료형을 쓴다.
부울 데이터 타입: Bool (참 혹은 거짓)
문자열 데이터 타입: String
변수: var
상수: let
변수의 자료형을 나타내는 것: 타입 어노테이션
타입 어노테이션이 없으면 상수 또는 변수의 타입을 식별하기 위해 추론 => 타입 추론(type inference)
var myChar3 : Character = "X" //:Character 생략불가,생략하면 String형임
튜플: 여러 값을 하나의 개체에 일시적으로 묶는 방법
ex)
let myTuple = (count: 10, length: 12.1, message: "Hi")
print(myTuple.message)
// Hi
print(type(of:myTuple.message))
//String
print(myTuple.2)
// Hi
let myTuple = (10, 12.1, "Hi")
print(type(of:myTuple))
// (Int, Double, String)
옵셔널 타입 -중요
-값을 반환할 때 오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환함
nil을 저장하려면 옵셔널 타입으로 선언해야함
- 옵셔널 타입의 변수를 선언하기 위해서는 타입 선언부 뒤에 ?문자를 씀
nil: 아무것도 없는 상태
옵셔널 타입 강제 언래핑
- 옵셔널형 선언 : 자료형 ?
- 옵셔널 언래핑 : 변수명 !
var x : Int?
x = 10
if let x = x{
print(x)
}
else{
print("nil")
}
/최신 버전의 swift컴파일러에서는
if let x = x부분을 if let x 라고만 써도 된다
------------------------------------------------------------
과제
print("Int32 Min = \(Int.min) Int32 Max = \(Int.max)") // int형은 플랫폼 마다 크기가 다르다
var myChar3 : Character = "X" //:Character 생략불가,생략하면 String형임
print(type(of:myChar3))
var myChar4 = "\u{0058}"
print (myChar4) //X
var userName = "Kim" // : String 생략하는 것이 일반적임
var age = 20
var message = "\(userName)의 나이는 \(age)입니다."
print(message) // Kim의 나이는 20입니다.
: 자료형 = 타입 어노테이션
생략하면 타입추론을 한다.
선언부에 타입 어노테이션이 없으면 스위프트 컴파일러는 상수 또는 변수의 타입을 식별하기 위하여 타입 추론 (type inference)사용
let= 10
print(x)
x = 20
print(x)
let x = 10
print(x)
x = 20
print(x)
// main.swift:3:1: error: cannot assign to value: 'x' is a 'let' constant
// x = 20
// main.swift:1:1: note: change 'let' to 'var' to make it mutable
// let x = 10
let myTuple = (count: 10, length: 12.1, message: "Hi")
print(myTuple.message)
// Hi
print(type(of:myTuple.message))
//String
print(myTuple.2)
// Hi
let myTuple = (10, 12.1, "Hi")
print(type(of:myTuple))
// (Int, Double, String)
옵셔널 자료형
print(10)
print(Int("12"))
print(Int("hi"))
// 10
// Optional(12)
// nil
var x : Int? //옵셔널 정수형 변수 x 선언
var y : Int = 0
x = 10 // 주석처리하면?
print(x) // Optional(10)
print(x!) // forced unwrapping해서 10이 나옴
print(y)
x = x! + 2
print(x)
y = x!
print(y)
// 0
// Optional(12)
// 12
옵셔널 변수는 초기값을 주지 않으면 nil값이 들어간다
nil값이 있는 옵셔널 변수를 언래핑하면 크래시가 난다.
var x : Int?
x = 10
if x != nil {
print(x!)
}
else {
print("nil")
}
var x1 : Int? //nil
if x1 != nil {
print(x1!)
}
else {
print("nil")
}
//10
//nil
주의
if x!=nil
이라고쓰면 안됨
옵셔널 바인딩
var x : Int?
x = 10
if let xx = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x, xx)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 { //옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
print(xx)
}
else {
print("nil")
}
//Optional(10) 10
//nil
var x : Int?
x = 10
print(x)
if let x = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x)
}
else {
print("nil")
}
//Optional(10)
//10
var:Int?
x =10
if let x{
print(x)
}
else{
print("nil")
}
//10 / 가장 최근 버전의 스위프트 컴파일러 에서는 if let x 라고만 써도 자동으로 언래핑이 된다.
var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let x = pet1, let y = pet2 {
print(x, y)
} else {
print("nil")
}
//cat dog
범위연산자
One-Sided Ranges
let names = ["A", "B", "C", "D"]
for name in names[2...] { //[...2], [..<2] //과제: 실행 결과
print(name)
} // C
// D
Nil-Coalescing Operator (Nil합병연산자) ??
let defaultAge= 1
varage : Int?
age = 3
print(age)
varmyAge= age ?? defaultAge
//age가 nil이아니므로 언래핑된값이 나옴
print(myAge)
let defaultColor = "black"
var userDefinedColor: String? // defaults to nil
var myColor = userDefinedColor ?? defaultColor
//nil이므로 defaultColor인 black으로 할당됨
print(myColor) //black
userDefinedColor = "red"
myColor = userDefinedColor ?? defaultColor
//nil이 아니므로 언래핑된 red가 할당됨
print(myColor) //red, 주의 optional(red)가 아님
for-in 반복문
for상수명in컬렉션 또는 범위 {
// 실행될 코드
}
if a < b &&d > c {
print("yes")
}
if a < b, d > c {
print("yes")
} // &&와,는 같은 의미
for i in 1..<10 {
if i > 5 {break}
//중요!! 에러 수정 과제: error: expected '{' after 'if' condition
print(i)
}
반복문에 걸리는 문장이 한 줄이라도 중괄호를 해야한다
let weight = 80.0
let height = 179.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
'1-2 > iOS프로그래밍 기초' 카테고리의 다른 글
iOS프로그래밍 기초 6주차 강의 정리 (0) | 2022.10.11 |
---|---|
iOS프로그래밍 기초 5주차 동영상 강의 정리 (2) | 2022.10.02 |
iOS프로그래밍 기초 3주차 정리 (0) | 2022.09.19 |
iOS프로그래밍 기초 1주차 과제 (0) | 2022.09.05 |
iOS프로그래밍 기초 1주차 예습 (0) | 2022.09.04 |