-
[3주차] Swift 문법 2iOS프로그래밍기초 2024. 9. 19. 16:41
1. swift 문법 복습
var name = "Hello" var age = 10 var aa = "이름은 \(name)이고, 나이는 \(age)입니다!" print(aa)변수는 var. 상수는 let 을 사용한다.
처음 초기화 시 변수 옆에 자료형을 작성하지 않아도 된다. // 타입을 추론
\() 를 사용해서 문자열 사이에 값을 넣을 수 있다. // js의 $() 같은문법
2. 변수 var 상수 let

let. << js 등의 언어에서 const

4. 튜플


let myTuple = (10,1.1,"hello") print(myTuple.2) //인데스 형식으로 접근할 수 있다. let (myInt , _ , myString) = myTuple print(myString) // 분해하기 편하다 let myTuple1 = (count: 10 , length: 12.1, message: "Hi") print(myTuple1.1 ,myTuple1.count //레이블 형태로 접근할 수 있다
// 빈 튜플의 이름을 void라고 이름 지어 놨음
void가 뭔가 -> 빈 튜플의 이름을 지어놓것이다.
5. 다른 언어와 차이점 여러개
++ , -- 연산자가 없음

== , === 차이

6. 범위 연산자

많이 새로움
7. 클래스 , 객체 , 인스턴스

설계도인 클래스로 만들어진 실체 -> 객체
실제로 사용중인 객체 -> 인스턴스
8. for문 과 ...

in 과 함께 쓰면서 간단하게 반복할 수 도 있음

변수를 사용하지 않으면 생략할 수 있음
9. print 문 사용
for name in 1...5 { print(name) } for name in 1...5 { print(name, terminator: " ") } for name in 1...5 { print(name, terminator: "+") } for name in 1...5 { print(name, separator: "..." , terminator: "") }// 띄어쓰기 개행 등등 여러가지 조절 할 수 있음
10. dictionary

11. repeat while 문

타 언어의 do while 문과 같음
12. if 문 조건

swift 는 if문에서 한줄만 사용해도 반드시 {} 중괄호를 사용해야한다 => for문도 마찬가지다.
13. if문 조건에서 콤마 사용 : 조건나열

조건나열
14. 가드문
정말 중요하지만 일단 패스 함 -> 함수 이해도 필요
15. switch - case 문
swift 에서는 눈에 보이지 않는 break가 있다 . 작성안해도됨


비워 놓을 수 없다

where 절 : 조건을 부가적으로 줄 수 있는 방법이다.
스위프트에서 where절을 많이 사용한다.
16. where 절

17. fallthrough

break문이 없기 때문에 생긴 fallthrough
18. 옵셔널 (optional). : 어려움
var x : Int? print(x) //nil //swift 는 값이 없다는 뜻으로 nil을 사용한다 //null과는 다르다. null자체로 값을 표현1단계
var x : Int? x = 10 print(x, x!) //Optional(10) //10 //optional은 그냥 출력이 안된다. 옵셔널에 감싸져서 나온다 //!를 사용해서 옵셔널을 풀어줘야한다2단계
var x : Int? print(x) //nil print(x, x!) //__lldb_expr_68/MyPlayground.playground:4: Fatal error: Unexpectedly found nil while unwrapping an Optional value //대표적인 오류로 없는값을 풀려고 하는것
3단계
var x : Int? = nil print(x) //nil //optional 타입 변수는 값이 없음을 나타내는 nil을 넣을 수 있다. var y : Int = nil print(y) //error //일반 자료형 변수는 nil을 못담는다.4단계
var x : Int? var y : Int x = 2 print(x) //옵셔널 변수에 값 - 래핑되었다. //항상 래핑됨 x = x! + 2 print(x) //!로 푸는걸 강제로 푼다고 언래핑이라함 //계산을 위해서는 항상 풀어야함 //다시 넣으면 래핑됨 y = x! print(y)var x : Int? x = 2 if x != nil { print(x!) } //그냥 강제로 풀면 안된다. //위 처럼 조건을 주는 형식으로 풀어야한다.
주의사항
var x : Int? x = 2 if x!=nil {. //주의)이처럼 붙이면 연산자 의미가 바뀐다. print(x!) } //비교할때는 항상 스페이스를 줘야한다 //!=의 !가 x!를 먼저계산하게됨
옵셔널 바인드 : 옵셔널 잘 푸는법

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") }if 다음에 var , let으로 변수를 놓고 옵셔널 변수를 넣으면 옵셔널 바인딩이 된다.
스위프트에서 아주 많이 쓰이는 문법

ios 개발시 옵셔널을 바인딩을 하는 3가지 방법 가장 최근 문법
var x : Int? x = 10 if let x { print(x) } else { print("nil") }if-let 문법 (short form of if-let to the Optional Binding)
여러개의 옵셔널 바인딩 하기
var x : Int? var y : Int? x = 10 y = 5 if let x , let y { //,로 이어갈 수 있다. //let을 붙여야하는걸 주의 print(x+y) } else { print("nil") }

? 와 !
var x : Int? x = 10 var y : Int! y = 20 print(x,y) //Optional(10) Optional(20) //같다차이점
var x : Int? x = 10 //x = x+2 //error var y : Int! y = 20 y = y+2 //자동으로 풀린다. print(x,y)
풀면 더 좋을 꺼 같을 때 ! 사용. 컴파일러가 자동으로 풀어줌 뭐가 좋을까?
대부분 ? 을 사용하고 풀어서 사용함
!는 나중에 필요함
가장많이 쓰는 문법 ??

let defaultAge = 1 var age : Int? age = 3 print(age) //과제:값은? //Optional(3) var myAge = age ?? defaultAge //age가 nil이 아니므로 언래핑된 값이 나옴 print(myAge) //과제: 값은? 3 var x : Int? = 1 var y = x ?? 0 print(y) // 1옵셔널 변수값 ?? 옵셔널 값이 없을때(nil일때) 들어갈 값
'iOS프로그래밍기초' 카테고리의 다른 글
[6주차] Swift 문법 5(클래스 failable initialize 상속) (1) 2024.10.10 [5주차] Swift 문법 4(일급시민 클로저 기초) (1) 2024.10.09 [4주차] Swift 문법 3 (1) 2024.09.26 [2주차] swift 문법 1 (1) 2024.09.12 [1주차] iOS 개요 (0) 2024.09.05