Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

iOS프로그래밍기초 4주차 정리 본문

1-2/iOS프로그래밍 기초

iOS프로그래밍기초 4주차 정리

김브래 2022. 9. 26. 21:57

자료형의 종류

- 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

//agenil이아니므로 언래핑된값이 나옴

print(myAge)

 

let defaultColor = "black"

var userDefinedColor: String? // defaults to nil

 

var myColor = userDefinedColor ?? defaultColor

//nil이므로 defaultColorblack으로 할당됨

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)")