Swift5 Samples
값과 변수, 상수, 문장 작성 방법
- Literal_Number : 숫자형 값
- Literal_String : 문자형 값
- Literal_Range : 범위값
- Nil : nil
- VarAndConstant : 변수와 상수
- Print : 콘솔에 값 출력하기
- Statement : Swift 코드 문장 작성하기
- Operator : 연산자
Swift의 기본 타입
- Bool : 부울 타입
- Int : 정수형 타입
- Float : 실수형 타입
- Character : Character 타입
- String : 문자열 타입
- String_Modify : 문자열 수정
- String_Substring : 부분 문자열
- String_Compare : 문자열 비교
- String_Views : 문자열과 뷰
- String_Founcation : 파운데이션 프레임워크 - 포맷 문자열 생성, 문자열 비교, 트리밍, 찾기
- String_IO : 문자열 저장/읽기. Foundation 필요
- Range : Range, ClosedRange, CountableRange, PartialRangeThrough 타입
- TypeOf : 타입 정보 얻기
- Unicode : 유니코드 다루기(작성중)
다수의 데이터를 다루는 타입
- Tuple : 튜플
- Array : 배열
- Dictionary : 딕셔너리
- Set : 셋
- ComplexCollection : 복합 콜렉션 타입
- ValueType : 밸류 타입
Swift의 반복, 조건문
- for : for 반복문
- while : while, repeat-while 반복문
- label : label을 이용한 흐름 제어문
- if : if 조건문
- guard : guard
- switch_case : switch-case
- version-check : #avilable을 이용한 플랫폼, 버전 체크
- Optional : 옵셔널 타입
- NilCheck : nil 여부 확인하기
- ForcedUnwrapping: 강제 언래핑
- OptionalBinding : 옵셔널 바인딩, if/guard 사용
- NilCoalescing : nil 병합 연산자 ??
- OptionalChain : 옵셔널 체인
- IUO : 암시적 언래핑 옵셔널(Implicitly Unwrapped Optional)
커스텀 타입 정의하기
- Struct : 구조체로 커스텀 타입 정의하기
- Class : 클래스로 커스텀 타입 정의하기
- Enum : Enum으로 커스텀 타입 정의하기
- Complex : 복합 타입 정의
- Typealias : 타입 별칭 정하기
- ValueAndReferenceType : 밸류 타입, 레퍼런스 타입
함수 정의와 실행하기
- Function : 함수 정의, 실행하기, 반환값
- Parameter : 함수 파라미터, 외부 파라미터 설정
- overloading : 같은 함수 이름 but 다른 함수 파라미터 타입, 다른 외부 파라미터 이름.
- ParameterDefaultValue : 기본값을 가진 파라미터
- ParameterVaridic : 가변 길이 파라미터
- ParameterInout : Inout 파라미터
- OptionalParamReturn : 파라미터나 반환값으로 nil 다루기
- NestedFunction : 함수 내부에 함수 정의하기
- StoredAndComputedProperty : 저장 프로퍼티, 연산 프로퍼티
- PropertyChange : 프로퍼티 변경 감지
- StructAndMethod : 구조체와 메소드
- StructAndMutating : Mutatable 메소드 작성
- StructAndStaticMethod : 정적 메소드와 정적 프로퍼티
- StructAndInitializer : 구조체 초기화
-
EnumAndMethod : Enum 타입과 메소드
-
EnumAndAssociation : Enum과 Association Value
-
NestedType : 중첩 타입
-
ImmutableAndMutable : Mutable API, Immutable API
- ClassAndInstance : 클래스 정의와 객체 생성, 프로퍼티
- ComputedProperty : 연산 프로퍼티
- ClassAndMethod : 클래스 내 메소드 정의와 호출
- ReferenceType : 클래스는 레퍼런스 타입
- PropertyLazy : 늦은 초기화(Lazy initialize) 프로퍼티
- DesignatedInitializer : 클래스와 Designated Initializer
- ConvenienceInitializer : Convenince Initializer
- FailableInitializer : Failable Initializer
- Deinitializer : Deinitializer
- InheritanceAndOverride : 클래스 상속과 메소드 재정의
- InheritanceAndInitializer1 : 클래스 상속과 부모 클래스의 Initializer 상속 - 자식 클래스에 Designated Initializer 작성 안함
- InheritanceAndInitializer2 : 클래스 상속과 부모 클래스의 Initializer 상속 - 자식 클래스가 부모 클래스의 모든 Designated 재정의
- InheritanceAndInitializerNotInherited : 자식 클래스에 Designated Initializer 작성 - Initializer 상속 안함
- InitializerAndFailableInitializer : Failable Initializer 재정의
- InheritanceAndRequiredInitializer : Required Initializer 작성하기
- type_method : 타입 메소드
- type_property : 타입 프로퍼티
- property_observing : 프로퍼티 감시
- property_lazy : 늦은 프로퍼티 초기화
- 상속, 재정의
- override : 상속과 재정의
- super_self : 클래스 상속과 self, super 참조
- initializer_inherite1 : Initializer 상속. 자식 클래스에 Designated Initializer를 작성하지 않은 경우
- initializer_in_child : 자식 클래스에 Designated Initializer 작성하기
- initializer_in_child_convenience : 자식 클래스에 Convenience Initializer 작성하기
- initializer_override : Initializer 재정의
- initializer_inherite2 : Initializer 상속. 자식 클래스에서 모든 Designated Initializer를 재정의하는 경우 Convenience Initializer 상속
- two_phase_initialization : 2단계 초기화
- initializer_override_failable : Failable initializer 재정의
- function_object : 함수를 객체로 다루기
- function_type : 함수 타입
- array_sort : 배열의 API에서 클로저 사용
- closure_api : 클로저 사용 함수 작성하기
- closure_inClass : 클래스 내 메소드와 프로퍼티로 사용하기
- capture : 클로저와 캡춰
- capture_reference : 클로저와 객체 캡춰, 캡춰시 객체 소유하지 않기(unowned)
- escaping : non-escaping, escaping 클로저
- autoclosure : autoclosure
- protocol_basic : 프로토콜 선언, 클래스와 구조체 채택
- static_method : 프로토콜 내 타입 메소드
- property : 프로토콜 내 프로퍼티 선언
- initializer : 프로토콜 내 Initializer 선언
- protocol_type : 프로토콜을 타입으로 사용
- class_only : 클래스 전용 프로토콜
- protocol_extension : 프로토콜 확장
- 객체 생성과 해제, 소유권
- arc_basic : 객체 생성과 소유, 객체 해제
- scope : 스코프에 의한 소유권 해제와 객체 해제
- collection : 콜렉션에 의한 객체 소유와 해제
- 객체 순환 참조(소유), 약한 참조
- reference_cycle : 강한 순환 참조로 인한 객체가 해제되지 않는 상황
- weak : 객체를 소유하지 않는 약한 참조(weak reference)
- unowned : 객체를 소유하지 않는 약한 참조 중 unowned
- any : Any, AnyObject 타입. 동적인 타입 변경
- type_check : is를 이용한 타입 체크
- type_cast : as를 이용한 타입 변환
- type_alias : 타입 알리아스
- extension : 타입 확장
- extension_struct_enum : 구조체와 Enum 확장
- extension_existing_type : 기존 타입 확장(String)
- 에러 정의, 에러 다루기
- error : 에러 정의, 에러 발생과 다루기
- error_function : 에러가 발생하는 함수 작성, 호출. 반환값
- error_propagation : 에러 전파
- error_closure : 에러 발생 클로저 사용하기.
- defer : defer를 이용한 예외 상황 마무리 동작
- generics : 배열과 딕셔너리 타입별 객체 생성과 사용
- custom_type_generics : 제네릭스로 타입 추상화된 함수와 타입 작성하기
- 연산자
- overloading : 연산지 오버로딩
- equal : 객체 비교 연산자 오버로딩
- custom_operator : 새로운 연산자 선언, 정의
- 첨자 표기법
- subscript : 첨자 표기
- AccessLevel : 커맨드라인 프로젝트 내 프레임워크를 사용한 접근 조절 예제. 동작안하니 코드 작성과 컴파일만 참고.
- AccessLevelApp : iOS 프로젝트 내 프레임워크를 사용한 접근 조절 예제. 동작함.
- singleton : 싱글톤 패턴
- NSObject
- nsobject_equal : NSObject와 객체 비교 isEqual(_:)
- nsobject_typecheck : NSObject와 객체 비교 : isKind(of:), isMember(of:)
- selector : Selector
- selector_ambiguous : Selector Ambiguous 에러와 해결 방법
- selector_perform : 셀렉터 동작 검사와 실행
- nsobject_description : 객체 설명
- Protocol
- protocol_optional : 프로토콜 내 선택적 구현 항목
- 데이터 다루기
- type_convert : Foundation Framework 데이터 타입과 Swift 타입 간 변환
- 문자열
- string1, string2 : NSString, String 다루기와 비교
- string_file : 문자열 저장
- string_referenceType : Reference 타입인 NSString
- string_mutable : NSMutableString
- 배열
- array : NSArray, Array 비교, 다루기
- array_file : 배열 파일 저장
- array_mutable : Mutable Array
- 딕셔너리
- dictionary : Dictioanry, NSDictionary 비교, 다루기
- dictionary_file : 딕셔너리 파일 저장
- 날짜와 시간
- date : 날짜, 날짜 포맷터, 칼렌더 다루기
- 파일 다루기
- fm_list : 파일 매니저로 파일 목록
- fm_copyremove : 파일 매니저로 파일 존재 확인/복사/삭제
- fm_read : FileHandler로 파일 내용 읽기/쓰기
- 데이타
- data_base64 : Data를 이용한 Base64 인코딩/디코딩
- 직렬화
- archive1 : NSKeyedArchiver, Unarchiver
- archive2 : Custom Class, NSCoding
- 타이머
- timer : 타이머 예제
- 알림
- notification : 알림
- 멀티쓰레드
- thread1 : Thread를 사용한 멀티 쓰레드
- thread2 : 큐 기반의 멀티 쓰레드
- 네트워크
- url : URL 생성. 정보 얻기
- url_resource_loading
- JSON
- json_parsing