오늘 만들 것: Move! 버튼을 누르면 다른 화면으로 이동하기
- 웹 뷰 사용법
- url을 찾는다: url string을 준비한다.
- url → request로 변경: url string을 URL을 거쳐 URLRequest로 만들어준다
- req → load: URLRequest를 웹뷰에 뿌려준다.
let urlString = "https://www.google.com" let url = URL(string: urlString) let urlReq = URLRequest(url: url)
이렇게 세 줄이면 간단! 한 줄 알았는데
오류떴으,,
아,, 날라가서 다시 씀 🤦♀️
여기 빨간 경고를 보면 옵셔널 타입인 URL?는 반드시 URL로 unwrapped
해야 한다고 되어있다.
찬찬히 보겠음.
?
: 이 물음표는 변수가 '값이 비어있을 수도 있는 애다' 라는 뜻. 비어있을 수도 있으니wrapping
해놓은 것임. 변수를 사용할 때 '사실은 값이 있지롱!' 하고 벗겨서 보여줘야 함 → 이 과정을upwrapping
이라고 함. 무조건 해줘야 해
어떻게 하느냐, 앞에 if를 붙이면 됨
if let url = URL(string: urlString){
let urlReq = URLRequest(url: url)
]
if
let url 〰️{ }
→ 만약 url에 값이 진짜 있으면{ }
안의 구문을 실행해라
이제 웹 뷰에 뿌려주기 〰️
WebViewMain.load(urlReq)
그리고 유튜브 댓글을 보니까 Library에 WebKit.framework를 추가해야 한다고 한다!
이 블로그를 참고함
성공 〰️❗️
추가로, 이 블로그를 참고해서 옵셔널에 대해 보겠음!
옵셔널 변수의 이용
- 옵셔널 (Optional): 변수의 값이
nil
일 수 있다
- 옵셔널은
?
키워드를 붙여서 선언한다//그냥 String 변수 선언 var abc1 = "1" //변수 옆에 :String? 이렇게 되어있으면 "값이 비어있을 수 있다."는 뜻 var abc2: String?
옵셔널을 사용하는 방법에는 두 가지가 있음
- 옵셔널 해제 (Optional Unwrapping)
이런 식으로 씀.var aaa = abc2!
abc2
에 무조건 값이 있으니까 믿고 벗기라는 뜻
⚠️ abc2가 nil인데 강제로 ! 옵셔널 바인딩을 하면 런타임 에러가 발생한다.
또 다른 예시
var number1:Int? = 20 var number2:Int = 100 if number1 { let sum = number1! + number1! }
- 옵셔널 바인딩 (Optional Binding)
→ 새로운 상수var number1:Int? = 20 var number2:Int = 100 if let nonOptionalNumber1 = number1 { let sum = nonOptionalNumber1 + number2 }
nonOptionalNumber1
에 옵셔널 변수number1
값을 넣고, 그 이후로non-optional
변수를 사용함
댓글