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 |
Tags
- 리펙토링
- RxCocoa
- 리팩토링
- ios
- tableView
- UICollectionView
- Clean Code
- map
- HIG
- swiftUI
- clean architecture
- MVVM
- swift documentation
- UITextView
- uiscrollview
- Xcode
- SWIFT
- 애니메이션
- 리펙터링
- 스위프트
- rxswift
- ribs
- 클린 코드
- Human interface guide
- Refactoring
- uitableview
- collectionview
- Observable
- combine
- Protocol
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[swift] 10. 열거형과 익스텐션 본문
1. 열거형
- 열거형을 이용하여 데이터 타입을 정의하면 컴파일 오류로 찾아내는데 용이 ( 배열과 같은 집단 자료형은 런타임 오류 발생)
1) 사용방법
1
2
3
4
5
6
7
8
9
|
enum MyEnum {
case ABC
case B
case C, D
}
print(a) // ABC
let b: MyEnum = .B // 열거형을 선언시, 생략하여 사용 가능
|
- 타입이 지정된 enum : 값에 접근하는 경우는 rawValue로 접근
1
2
3
4
5
6
7
8
9
10
|
enum MyEnum: Int {
case ABC = 123
case B = 2
case C = 4
}
let a: MyEnum = .ABC
print(a) // ABC
print(a.rawValue) // 123
|
- 값 +1씩 자동할당 :
1
2
3
4
5
6
7
8
9
|
enum MyEnum: Int {
case ABC = 123
case B = 10
case C
}
let a: MyEnum = .C
print(a.rawValue) // 11
|
- 클래스 처럼 사용 : 단, 인스턴스를 만들 수 없음
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
|
enum MyEnum: Int {
// 저장 프로퍼티 사용
case ABC = 123
// 연산 프로퍼티 사용
var value: Int{
return 1
}
// 메서드 사용
func printValue(s : Int) -> () {
print("입력 값=\(s)")
}
// 타입 메서드 사용
static func getName() -> String {
return "abc"
}
}
var m: MyEnum = .ABC
m.printValue(s: 10) // 입력 값 = 10
MyEnum.getName() // abc
|
2. 익스텐션(Extensions)
- 기존 객체에 연산 프로퍼티와 메서드 추가 가능 ( 저장 프로퍼티는 불가, 오버라이딩 불가, @IBAction 붙는 액션 메소드는 불가 )
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// Double이라는 자료형(클래스)에 추가
extension Double { // self시, Double 객체를 참조
// 저장프로퍼티로 확장
var km: Double { return self * 1_000.0} // 언더바는 아무런 의미 없고 가독성을 위해 존재
var description: String {
return "\(self)km는 \(self.km)m입니다."
}
}
let distance = 42.0.km
print(distance) // 42000.0
print(distance.description) // 42000.0km는 42000000.0m입니다.
|
- 메서드 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// Double이라는 자료형(클래스)에 추가
extension Int { // self시, Double 객체를 참조
func printValue(sum value: () -> Void){
for _ in 0 ..< self{
value()
}
}
// 수정하려면 mutating키워드 붙일 것
mutating func plus(){
self = self+1
}
}
5.printValue {
print("이것은 클로저 표현식")
}
// mutating키워드 함수는 값이 바뀌어야 하므로 let이나 상수리터럴 값 그대로 사용하면 오류
5.plus() // error
var tmp = 5
tmp.plus() // 6
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
3. 주석 MARK
코드 상의 위치를 점프바에 표현해주며, 하이픈 MARK는 수평선 생성
// MARK: 내용
// MARK - 내용
'swift 5 문법' 카테고리의 다른 글
[swift] 12. 예외 처리 (throws, throw, do - try - catch) (3) | 2020.03.29 |
---|---|
[swift] 11. 프로토콜 (protocol) (0) | 2020.03.29 |
[swift] 9. 상속 및 다운캐스팅 (0) | 2020.03.28 |
[swift] 8. 구조체(struct)와 클래스(class), 프로퍼티 (0) | 2020.03.27 |
[swift] 7. 클로저(closure) (0) | 2020.03.26 |
Comments