티스토리 뷰
Computer/Android&iOS
(iOS/swift4) Value of optional type 'CGFloat?' must be unwrapped to a value of type 'CGFloat'
ywlee 2019. 1. 17. 14:16Error
Value of optional type 'CGFloat?' must be unwrapped to a value of type 'CGFloat'
옵셔널 타입의 'CGFloat?' 값은 반드시 'CGFloat' 값으로 unwrapped 되어야 한다.
Why ?
아래와 같은 함수가 있다.
1 2 3 4 5 6 7 8 9 10 11 | func getRatio(x1:CGFloat, y1:CGFloat) { // 공식 - x1:y1 = x2:y2 // y2 = (y1 * x2) / x1 var x2:CGFloat = 1.0 var y2:CGFloat y2 = (y1 * x2) / x1 print("result 1 : \(y2)") } | cs |
그리고 다음과 같이 호출한다.
1 2 3 4 | let imgw = imvFixedIntro.image?.size.width let imgh = imvFixedIntro.image?.size.height getRatio(x1: imgw, y1: imgh) | cs |
위의 1, 2번째 줄을 보면, image size 를 가져오는데,
image 에 ? 가 붙어 변수들이 optional 값이 되어버렸다.
이를 함수에 집어넣으려고 하니 null 일 수 도 있는 애를 왜 쓰려고 하냐! 하면서.. 오류를 뿜는것이다.
swift, kotlin 과 같은 언어는 null-safety 한 언어기 때문에...
따라서 우리는 처리를 해야한다.
Solved
아래와 같이 ! 를 붙여 null 이 아님을 보장한다.
1 | getRatio(x1: imgw!, y1: imgh!) | cs |
물론, 값이 정말 null 이 아니어야 한다.
null 일 경우 당신의 앱은 죽어버릴 것이야
'Computer > Android&iOS' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- BBC 가쉽
- 뉴스룸
- Swift
- CentOS
- mysql
- 스위프트
- php
- linux
- Node
- 노드
- Phaser
- Android
- 안드로이드
- nodejs
- 깃헙
- 리눅스
- 배열
- C
- git hub
- Asterisk
- 앵커브리핑
- 손석희
- GIT
- node.js
- 서버
- Kotlin
- 점유율
- xcode
- C언어
- IOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함