티스토리 뷰



Error


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 일 경우 당신의 앱은 죽어버릴 것이야







공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함