Swift 107
- Swift: iOS에서 Custom URL Scheme 등록해서 url로 앱 열기
- Swift: Action Extension에서 extensionContext가 iOS 18에서 작동하지 않는 문제
- Swift: Action Extension으로 사진을 내 앱으로 전송하기
- Swift: @dynamicMemberLookup 사용법 및 @Published 와 결합 가능 여부
- SwiftUI: 목록 행(row) 및 헤더(header) 높이 변경
- Swift: @retroactive 란?
- Swift: some, any 키워드
- Swift iOS 앱 프로젝트: 버튼을 누르면 iOS에 내장된 사전(dictionary) 열기
- Swift 예제: 복잡한 로컬 알림(Local Notification) 구현 (1) - 어학 앱 열기 알림
- Swift: [ChatGPT가 말하는] 로컬 알림(로컬 노티피케이션) 기능의 한계점과 극복 방안
- [자막 번역] WWDC24: Embedded Swift로 경량화하기
- Swift: Combine 기본 기능 81가지 한 번에 요약 정리
- 코딩테스트: 쿼드트리 (백준 1992) + 쿼드트리로 압축 및 해제하는 과정
- Swift 문법: switch문의 고급 사용법 / if case let 및 for case let
- Swift 예제: iOS 앱에 위젯 추가 및 연동
- Swift UIKit, SwiftUI: AVPlayerViewController에서 재생중인 비디오의 강제 풀스크린 전환 및 반복 재생
- Swift에서 애플 앱 프로그래밍 말고 할 수 있는 것들: 서버, 임베디드, 모바일 크로스플랫폼, 게임 엔진 등
- SwiftUI: Xcode 15 버전 이상에서 iOS 하위 버전 (15.0 이상) 호환되는 위젯 생성
- Swift: 튜플 (Tuple), 튜플 패턴 분해, 버전 6에서의 변경사항
- SwiftUI: 방사형(원형) 레이아웃 (Radial Layout) 만들기
- SwiftUI 예제: 드래그로 버튼 선택하기
- Xcode: 코드 에디터에서 사용할 코드 스니펫(Code Snippet) 추가 및 플레이스홀더 만들기
- Swift: PDFView에서 터치한 곳의 문서상 좌표 알아내기
- Swift: iOS 프로젝트의 인앱 결제(In App Purchase; IAP) 기초 예제
- Swift: Xcode iOS 프로젝트에서 프레임워크(Framework)로 모듈 분리해서 사용하는 방법
- SwiftUI: CoreData와 CloudKit을 이용해 iCloud로 기기간 데이터 동기화 기초
- Swift: 약수(divisor) 구하기
- Swift: 우선 순위 큐 Priority Queue (설명 + 구현)
- Swift: 큐(queue) 구현하기
- SwiftUI: 문서 폴더(Document Directory) 내부의 전체 폴더 구조(tree) 표시 (재귀 사용)
- Swift 예제: AVFAudio와 사운드폰트 파일을 이용해 미디(MIDI) 파일 재생
- Xcode를 이용해 백준 문제를 Swift 언어로 풀기 및 문제 목록 관리 + 값 입력 받는 방법
- Swift+AudioKit: SF2 형식의 사운드폰트 추가
- Swift: Combine 개요
- Swift: iOS에서 커스텀 카메라 만들기 (2) – AVCapturePhotoOutput으로 고화질 사진 찍기
- Swift: async/await 키워드를 이용한 동기적 실행 보장 함수 작성
- Swift: iOS에서 커스텀 카메라 만들기 (1) - 비디오 캡처 방식 활용
- Swift: RealityKit 프로젝트에 .rcproject(Reality Composer 프로젝트 파일) 추가하고 앱에 통합하기
- Swift(스위프트): 오디오 라이브러리 AudioKit 프레임워크 소개
- Xcode Swift 개발 필수 앱: SF Symbols (iOS등의 시스템 이미지 열람, 호환성 확인)
- Swift(스위프트): 백그라운드 작업 (Background Tasks)
- Swift: 다중 옵셔널 (Nested optional; ??)의 존재 이유와 언래핑 방법
- Swift(스위프트): 비트 연산자 (Bit Operator)
- Swift(스위프트): 달력 그리기 (2) → Interface Builder 스토리보드 GUI 방식으로 그리기
- Swift(스위프트): 달력 그리기 (1) → 달력 데이터 분석
- Swift(스위프트): URL 주소 인코딩 (Percent Encoding)
- Swift(스위프트): 멀티피어 통신 (Multipeer Connectivity) [기초]
- Swift(스위프트): 홈 스크린에 바로가기 메뉴(Quick Actions, 퀵 액션) 만들기
- Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 下 (커스터마이징)
- Swift(스위프트): Debounce, Throttle 로 함수 실행 횟수 제한 (DispatchWorkItem 이용, 외부 라이브러리 없이)
- Swift(스위프트): 공유 메뉴 (UIActivityViewController) 띄우기
- Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 上 (기초)
- Swift(스위프트): 로컬 알림(Local Notification)을 스케줄에 맞춰 반복 발신하기 (및 한계점)
- Swift(스위프트): 스테퍼(UIStepper)의 값을 레이블(UILabel)에 표시하기 (일반 방법 및 RxSwift 사용 방법)
- Swift Package Manager(SPM)와 CocoaPods를 동시에 대응하는 라이브러리 만들기 (1)
- Swift + FirebaseUI: (3) FirebaseUI를 이용해 Apple(애플) 소셜 로그인 화면 구현
- Swift + FirebaseUI: (2) FirebaseUI를 이용해 Google(구글) 소셜 로그인 화면 구현
- Swift(스위프트): Core ML + Create ML 기초 요약 下 (이미지 분류 앱 만들기)
- Swift(스위프트): Core ML + Create ML 기초 요약 上 (기계학습 모델 만들기)
- Swift(스위프트): 뷰 컨트롤러와 내부의 컨테이너 뷰(Container View)간의 데이터 교환
- Swift(스위프트): 개발 언어(Development Language)를 영어에서 한국어로 변경
- SwiftUI: ObservableObject 프로토콜과 @Published, @ObsevedObejct, @StateObject 프로퍼티 래퍼
- Swift(스위프트): 버튼에서 메뉴 표시 기초 (UIButton 또는 UIBarButtonItem에서 UIMenu를 표시하는 방법) - 스토리보드
- Swift(스위프트): Local Notification (로컬 푸시 메시지, 오프라인 푸시 메시지)
- Swift(스위프트): 인터넷 접속 여부 판별하기 (WiFi & 셀룰러 LTE, 5G 등)
- Xcode: cmd + / 단축키를 눌렀을 때 코멘트(주석) 위치를 현재 들여쓰기에 맞추기 (CommentHere)
- Swift: AVAudioSession.interruptionNotification 처리 (사운드 재생 중 전화벨, 알람 등이 울렸을 때 처리)
- Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시
- Swift(스위프트) + Firebase: 사용자 정의 struct(구조체)를 사용한 Firestore CRUD 기초
- Swift(스위프트): 제네릭(Generics) - 제네릭 타입, 제네릭 함수, 연관 타입(Associated Type), where 조건절
- Swift(스위프트): 앱 최초 설치 후 한 번만 실행하는 작업, 버전 업데이트시에만 실행하는 작업 만들기
- RxSwift(ReactiveX + Swift): 기본 개념 및 스토리보드 예제 (요약)
- Xcode 프로젝트에 코코아팟(CocoaPods) 설치 및 디펜던시 추가 방법
- Swift(스위프트): Codable을 사용하여 사용자 정의 오브젝트를 UserDefaults에 저장 (프로토콜 지향 접근 방식)
- Swift(스위프트): 컬렉션 뷰의 셀을 길게 누르면(long press touch) 애니메이션 나타나도록 하기
- Swift(스위프트): 배열의 reduce
- Swift(스위프트): 이미지를 그레이스케일로 변환
- Swift(스위프트): 앱 아이콘 변경 기능 만들기
- Swift(스위프트): 튜토리얼을 통한 디자인 패턴: MVVM (Model-View-ViewModel) 2
- Swift(스위프트): 튜토리얼을 통한 디자인 패턴: MVVM (Model-View-ViewModel) 1
- Swift(스위프트): 언어 현지화(로컬라이제이션 Localization) - 다국어 지원 앱 만들기
- Swift(스위프트): NSCoding(NSSecureCoding)을 이용한 클래스 객체 직렬화(바이너리 인코딩)
- Xcode: UIView 결과물 미리보기 (빌드 및 @IBDesignable을 사용하지 않고 SwiftUI의 프리뷰 기능을 이용)
- Swift(스위프트): iOS 단위 테스트(Unit test) 및 UI 테스트 튜토리얼
- Swift(스위프트): CGContext에서 GState의 의미, saveGState & restoreGState 사용법 (스토리보드, Core Graphics)
- Swift(스위프트) 기초: struct (구조체; structures)
- Swift(스위프트): 코어 데이터(Core Data) CRUD 기초 (UIKit에서)
- Swift(스위프트): 프로퍼티 리스트(property list; plist) 읽어오기
- iOS 앱을 위한 다양한 오프라인 옵션
- iOS 프로그래밍 예제(Swift): 마이크를 통한 소음 데시벨 감지 (마이크 권한 설정, 녹음 진행)
- Swift(스위프트): URL 관련 기능 요약 (URL, URLComponents, URLSession)
- Swift(스위프트): 타이머(Timer) 만들기
- Swift(스위프트): 숫자를 세자리수씩 끊고 콤마(,) 넣기
- Swift(스위프트): 클로저 (Closure) - 정의 및 문법
- Xcode: 아이콘 이미지를 Xcode 애플리케이션(앱) 아이콘으로 변환 (appicon.co 이용)
- Swift: JSON 스트링을 Swift 배열로 변환 (객체로 이루어진 배열의 JSON)
- Swift: GET, POST 로 HTTP 네트워크 정보 주고받기
- Swift: DateFormatter 날짜 한글로 표기
- Swift UI: iOS 앱 프로젝트 Swift UI로 시작하기 (Xcode)
- Swift 기초 (8): 제네릭 타입 (Generic Type)
- Swift 기초 (7): 에러 처리 (Error Handling)
- Swift 기초 (6): 프로토콜 (Protocol)
- Swift 기초 (5): Enum (열거형; Enumeration)
- Swift 기초 (4): 클래스, 옵셔널과 nil
- Swift 기초 (3): 함수 (function)
- Swift 기초 (1): 상수, 변수, 배열, 사전
- Swift 기초 (2): if 문, for ~ in 문, while 문, switch 문