article thumbnail image
Published 2021. 9. 21. 23:36

ptional (선택적인)

변수에 값이 있을 수도, 없을 때도 있기 때문에 존재한다

(값을 저장 or 값이 없음)

 

Ex) var Whoami : int = 10     //결과 값 Int Type을 가진 10

    var Whoamme : int? = 10 //결과 값 Optional Int Type을 가진 Optional(10)

    var Whoru : int!               //결과 값 nil(초기값을 주지 않았기 떄문)

    var Whoru : int?               //결과 값 nil(초기값을 주지 않았기 떄문)

 

(Optional)Data Type Change (형변환)

값을 지정하고 변환하고자 하는 Type을 쓴 후 값을 감싸준다

print (Int(“345”)) //Optional(345)

 

Int형이 아닌 값을 변환시 nil 값을 출력함

print (Int(“wassp”) //nil

print (Int(“3.4”) //nil

 

Forced Unwrapping(강제 언래핑)

Optional Int 되어있는 값을 Int형으로 변경함 [변수명!]

var a : Int? //초기 값이 없으니 nil

a = 10 //초기 값이 있으니 Optional(10)

print(a!) //강제 언래핑을 해서 10

a = a! + 2  //Optional(12)

 

 

Forced Unwrapping(강제 언래핑) optional binding

언래핑 두 번째 방법

if let constname = optional

{ 변수의 값이 있으면 상수 [constname]에 대입 후 if문 실행

변수의 값이 없으면 if문의 조건이 거짓임으로 실행 x }

 

if var constname = optional

{ 변수의 값이 있으면 변수 [constname]에 대입 후 if문 실행

변수의 값이 없으면 if문의 조건이 거짓임으로 실행 x }

 

var constname : Int?

constname = 10

if let constname1 = constname

{ print(constname1,constname)} //10 Optional(10)

 

여러 옵셔널을 언래핑 시 콤마 사용

var person : String?

var human : String?

person = “ju”

human = “jang”

if let p = person, let h = human

(, == and)

{ print(p, h) } //ju jang (if let을 통해 언랩핑)

else { print(“nil”) }

 

 

let z : Int! = 1 //Optional(1)

let y : Int = z //자동 unwrap 1

let x : Int = a! //unwrap 1

let u = z //Optional(1) unwrap을 하지 않아도 된다고 판단

let b = z + 1 //2 (unwrap + 1)

 

Optional 사용하는 이유 : 값이 없든 있든 처리하기 위해

 

형 변환

UpCasting, DownCasting

 

상속 관계가 있는 클래스들만 형 변환 가능

 

자식인스턴스 (as) 부모클래스 (UpCasting, 자식이 추상화)

부모인스턴스 (as!) 자식클래스 (DownCasting, 확신이 있을 때)

부모인스턴스 (as?) 자식클래스 (DownCasting, 확신이 없을 때)

 

6. 연산자 (연산을 수행하는 기호)

a = b //(b의 값을 a로 할당)

var b = 10 //(10b에 할당)

a = a + 1 //a 변수의 값을 1 증가

a = a - 1 //a 변수의 값을 감소

 

비교 연산자

a == b //ab 값이 같은지 true

a > b //ab보다 큰지 true

a >= b //ab보다 크거나 같던지 true

a != b //a,b 가 같지 않다면 true

 

범위 연산자

a...b //a부터 b까지

10...15 //10부터 15까지

a..<b //a부터 b 포함 전까지

5..10 //5부터 10포함 전인 9까지

 

 

7. Nil-Coalescing Operator (Nil 합병연산자) ??

let realAge = 1

var age : Int? //Optional

age = 23 //Optional(23)

var AAggee = age ?? realAge

//agenil 아니면 age Unwrap 후 출력

//agenil이면 realAge를 출력

print(AAggee) //23

 

8. 제어문

 

For

for [변수명] in [반경]

for I in 1...3

{ print(I) }

결과 값

1

2

3

 

문자열 For

let human = [“arm” : 2, “brain” : 1]

for (a, b) in human

{ print(“\(a) have \(b) have”) }

 

 

 

 

 

 

While

For문과 비슷한 반복문으로 지정된 조건이 만족시까지 반복

 

만약 print(myCount)while 문 내에 넣을 시 0부터 1000까지

출력 된다

 

Repeat...While

while은 조건이 만족시 바로 종료되지만 Repeat는 최소 1회는

실행 후 조건을 확인한다

 

For And If

for문 중간에 조건식 If문을 사용해 중간에 중지(break)를 함

 

break를 중괄호 { }로 덮어줘야 실행 가능

for I in 1...5

{ if I > 3 {break}

print (I)

}

결과값

1

2

3

 

Continue (이 후 모든 코드를 건너 뛴 후 상단으로 위치)

for I in 1...10 {

if I % 3 == 0 { continue } print (i) }

결과 값 1,2,4,5,8,10

 

If, &&

If문 내에서 조건식 ,&&and를 의미하기 때문에

두 값이 참일 시 값이 나옴

 

 

 

 

Switch-case 과제) 다중 If-else문 변형

 

'iOS🍎' 카테고리의 다른 글

iOS - 7주차  (0) 2021.10.18
iOS - 6주차  (0) 2021.10.12
iOS - 5주  (0) 2021.10.04
iOS - 4주차  (0) 2021.09.26
iOS - 1주차  (0) 2021.09.05
복사했습니다!