반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Python
- 노코드앱
- 휴가관리
- 데이터분석
- lookML
- 어플만들기
- 데이터
- Ai
- 인공지능
- 어플
- Looker
- 자동화
- data
- app
- 엑셀
- 샤딩
- 파이썬
- 데이터시각화
- 데이터저장
- nocode
- 노코드
- 자바
- appsheet
- 구글스프레드시트
- openAI
- Java
- 데이터모델링
- 앱시트
- 앱만들기
Archives
- Today
- Total
공부한 것 꼭꼭 씹어먹기
optional 본문
반응형
// 옵셔널 타입 변수에 아무값도 할당하지 않았을 경우 기본적으로 nil을 할당함
var name: String? // nil이 할당됨
name = "Gunter"
// print(name) 해보면 Optional("Gunter")라고 나온다.
// 옵셔널 변수는 Optional로 값이 포장되어 있어서 일반 변수와 연산할 수 없는데 이를 해결하기 위해 옵셔널 바인딩을 쓴다.
옵셔널 해제 방법
```swift
// 1. 강제 : 이렇게 강제적으로 바인딩을 해제하는 것은 위험. 값이 nil일 경우 에러나기 때무네
var number: Int? = 3
print(number) // Optional(3)
print(number!) // 3
// 2. if문 : if문으로 옵셔녈 바인딩을 하면 if 블럭 안에서만 result 변수를 쓸 수 있다
if let result = number {
print(result) // 3 => result에는 옵셔널을 해제해서 할당받은 값이 들어있다
}else {
// 값 추출에 실패했을 경우 else 블럭을 탄다
}
// 3. guard : guard를 쓰면 test함수 블럭 전체에서 result 변수에 담긴 옵셔널 해제값을 쓸 수 있다
func test() {
let number: int? = 5
guard let result = number else { return } // 값 추출에 실패했을 경우 else 블럭을 탄다
print(result)
}
test() // 5
// 4. 컴파일러에 의한 옵셔널 자동 해제
let value: Int? = 6
if value == 6 {
print("value가 6입니다") // 비교연산자를 이용해 비교를 하면 컴파일러가 자동으로 옵셔널 해제 해줌
} else {
print("value가 6이 아닙니다")
}
// 5. 묵시적 해제
let string = "12"
var stringToInt: Int? = Int(string)
print(stringToInt + 1)
// string을 int로 캐스팅할 때는 옵셔널 변수로 받아야 한다.
// string변수에 숫자로 변환할 수 없는 문자가 들어갈 수도 있기 때문이다.
var stringToInt: Int! = Int(string)
// 타입 뒤에 !를 붙이면 그 변수를 사용할때 묵시적으로 옵셔널이 해제된다.
```
패스트캠퍼스 ios 앱 개발 강의를 듣고 공부한 내용을 정리하였습니다.
반응형
'Swift 기초' 카테고리의 다른 글
상속 (0) | 2021.10.27 |
---|---|
property (0) | 2021.10.26 |
class, struct, enum (0) | 2021.10.25 |
함수 (0) | 2021.10.24 |
switch, for, array, dictionary, set (0) | 2021.10.24 |
Comments