일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 객체 만들기
- 한글입력 오류
- jquery 사용하기
- 제이펍 출판
- 객체
- python tkinter 인터페이스
- 기획자랑 사이좋게 지내고 싶다
- 한글입력 잘림
- 제이쿼리연결
- max apache
- 닐 스미스 지음
- 자바스크립트 배열 할당
- 맥 mysql
- 블록 스코프
- 배열 분해 할당
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 객체지향
- 한글입력 씹힘
- 황반석 옮김
- 한글잘림
- 맥 아파치
- SwiftUI 기반의 iOS 프로그래밍
- 자바스크립트 객체
- python GUI 사용하기
- 자바스크립트 class
- 한글입력 안됨
- 비주얼스튜디오 코드
- 자바스크립트
- max MySQL
- 생활코딩
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 객체 만들기
- 한글입력 오류
- jquery 사용하기
- 제이펍 출판
- 객체
- python tkinter 인터페이스
- 기획자랑 사이좋게 지내고 싶다
- 한글입력 잘림
- 제이쿼리연결
- max apache
- 닐 스미스 지음
- 자바스크립트 배열 할당
- 맥 mysql
- 블록 스코프
- 배열 분해 할당
- 핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍
- 객체지향
- 한글입력 씹힘
- 황반석 옮김
- 한글잘림
- 맥 아파치
- SwiftUI 기반의 iOS 프로그래밍
- 자바스크립트 객체
- python GUI 사용하기
- 자바스크립트 class
- 한글입력 안됨
- 비주얼스튜디오 코드
- 자바스크립트
- max MySQL
- 생활코딩
- Today
- Total
java,javascript,android,php,sql,공부용,메모용
타입 캐스팅과 타입 검사 / 형변환 타입형변환 / Xcode SwiftUI Playground 공부 본문
Xcode SwiftUI Playground 공부
타입 캐스팅( type casting, 형 변환)
코드를 작성하고 값을 식별하지 못할 때, 메서드나 함수가 반환하는 값이 불명확, 예상되지 않은 타입의 값일 때
as 키워드를 사용하여 코드가 의도하는 값의 타입을 컴파일러 할 수 있도록 해야 한다.
object(fotkey:) 메서드가 반환하는 값을 String 타입으로 처리해야 한다는 코드
let myValue = record.object(forkey : "comment") as! String
업 캐스팅 (upcasting)
특정 클래스의 객체가 상위 클래스들 중의 하나로 변형
as 키워드를 사용하여 수행된다.
성공 여부를 컴파일러가 알려줄 수 있다 (보장된 변환, guaranteed conversion)
UIView | ||
⎾ |
UIControl | ⏋↖︎ as 사용 업캐스팅 |
UiSlider | UIButton |
그림이라 생각하고 보면 3단이고 UIView 아래 UIControl 그아래 UiSlider, UIButton 이 있다
// UIButton을 UIControl의 하위 클래스로 안전하게 업 캐스팅될 수 있다.
// 업캐스팅 upcasting
let myButton : UIButton = UIButton()
let myControl = myButton as UIControl
다운 캐스팅 (downcasting)
어떤 클래스에서 다른 클래스로 만드는 변환이 일어날 때 발생
유효하지 않은 변환 시도를 컴파일러가 잡을 보장이 없다.
대부분 런타임 에러가 발생할 것이다
as! 키워드로 수행되며 강제 변환(forced conversion)이라고 한다
UIKit | ||
⎾ |
UIScrollView | ⏋↘︎ as! 사용 다운캐스팅 |
UITableView | UITextView |
// UIScrollView를 UITextView로 다운 캐스팅하려는 코드
// 다운캐스팅 downcasting
let myScrollView : UIScrollView = UIScrollView()
let myTextView = myScrollView as UITextView
// 에러 UIScrollView' is not convertible to 'UITextView'
// 변환이 안된다고함
// Did you mean to use 'as!' to force downcast? as!사용해서 강제 다운을 하려고 했는지 알려준다
// UIScrollView 인스턴스를 UITextView 클래스 인스턴스로 안전하게 변환할 수 없음을 알려준다.
// 컴파일러가 이 변환의 안정성을 보장할 수 없다고 함
// as! 를 사용해 강제 다운캐스팅 가능하다.
let myTextView = myScrollView as! UITextView
그러나 이렇게 실행해도 변환할 수 없어 충돌이 발생할 것이라 한다
** as? 옵셔널 바인딩을 사용해 더 안전하게 다운 캐스팅하기
변환에 성공했다면 지정한 타입의 옵셔널 값이 반환
변환에 오류가 있다면 옵셔널 값은 nil로 반환
// as? 옵셔널 바인딩을 이용한 다운캐스팅
if let myTextView2 = myScrollView as? UITextView {
print("Type cast to UITextView succeeded")
} else {
print("Type cast to UITextView failed")
}
** is 키워드 사용으로 타입 검사(type check)를 할 수 있다
// 해당 객체가 MyClass라는 이름의 클래스의 인스턴스인지 확인하는 코드
// is 키워드를 사용해 타입검사(type check) 가능
if myobject is MyClass {
// myobject는 MyClass의 인스턴스다
}
## 솔직히 아직 타입 캐스팅 타입 검사가 어떤 기능이고 어떻게 활용해야 하는지 감이 안 온다
## 일단 책을 순서대로 읽고 있으니 뒤에 가면 어떤 기능을 하고 앞에서 썼던 내용들이나 이해하지 못하고 와닿지 않는 부분들이 이해가지 않을까 싶다 그때쯤 다시 타입 캐스팅 타입 검사를 되돌아볼 예정
핵심만 골라 배우는 SwiftUI 기반의 iOS 프로그래밍, 닐 스미스 지음, 황반석 옮김, 제이펍 출판
'모바일 > SwiftUI ios 공부' 카테고리의 다른 글
스위프트 반복문 for-in구문, while 반복문, repeat 반복문, continue 구문, if문 / Xcode SwiftUI Playground 공부 (0) | 2021.09.08 |
---|---|
스위프트 연산자 표현식 / Xcode SwiftUI Playground 공부 (0) | 2021.09.08 |
옵셔널 타입 / 옵셔널 바인딩 / Xcode SwiftUI Playground 공부 (0) | 2021.09.07 |
스위프트 튜플 Tuple/ Xcode SwiftUI Playground 공부 (0) | 2021.09.07 |
스위프트 변수, 상수 선언/ Xcode SwiftUI Playground 공부 (0) | 2021.09.07 |