iOS/Swift 19

클로저 (Closures) - 클로저 표현

클로저 (Closure)는 코드블럭으로 C와 Objective-C의 블럭(blocks)과 다른 언어의 람다(lambdas)와 비슷 합니다. 클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 이 캡쳐와 관련된 모든 메모리를 알아서 처리 합니다. 캡처의 개념에 대해 익숙하지 않다고 걱정하지 않으셔도 됩니다. 값 캡쳐는 아래에서 자세히 설명해 두었습니다. 전역 함수(global functions)와 중첩 함수(nested function)은 실제 클로저의 특별한 경우 입니다. 클로저는 다음 세 가지 형태 중 하나를 갖습니다. 전역 함수: 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수: 이름이 있고 관련된 함수로 부터 캡쳐할 수 있는 클로저 클로저 표현: 경량..

iOS/Swift 2023.04.25

콜렉션 타입(Collection Types) - 셋(Sets)

셋(Sets) set 형태로 저장되기 위해서는 반드시 타입이 hashable이어야만 합니다. Swift에서 String, Int, Double, Bool 같은 기본 타입은 기본적으로 hashable 입니다. Swift에서 Set 타입은 Set으로 선언 합니다. 빈 Set생성 var letters = Set() print(letters.count) // 0 letters.insert("a") letters = [] 배열 리터럴을 이용한 Set생성 var favoriteGeneres: Set = ["Rock", "Classical", "Hip hop"] Swift의 타입추론으로 아래와 같이 선언도 가능 합니다. var facoriteGeneres: Set = ["Rock", "Classical", "Hip ..

iOS/Swift 2023.04.21

콜렉션 타입(Collection Types) - Array

Swift에서는 콜렉션 타입으로 Array, Set, Dictionary 세 가지를 지원 합니다. 콜렉션의 변경 Array, set, Dictionary를 변수(var)에 할당하면 이 콜렉션은 변경 가능하고 상수(let)에 할당하면 변경 불가능 합니다. 배열(Array) 배열의 축약형 문법 배열 타입은 Array로 적을 수 있는데 축약형으로 [Element]형태로 사용할 수도 있습니다. 빈 배열의 생성 아래와 같이 Int형 빈 배열을 생성할 수 있습니다. var someInts = [Int]() someInts.append(3) // 배열에 3을 추가 했습니다. someInts = [] // 배열을 비웠습니다. 배열의 아이템 타입은 그대로 Int로 유지 됩니다. 기본값으로 빈 배열 생성 repeating..

iOS/Swift 2023.04.19

Swift) 코드로 UITableView 구현하기

Swift) 코드로 UITableView 구현하기 코드로 UITableView를 구현해 봅시다. TableView란?? A view that presents data using rows in a single column. -> "단일 열의 행을 사용하여 데이터를 표시하는 보기 입니다" 라고 공식문서에서 소개해주네요 구현된 TableView를 보자면 아래처럼 각각의 표처럼 View가 되어 있고 하나의 칸마다 데이터가 들어간 것을 볼 수 있네요. 또한 관련 행을 섹션으로 그룹화하여 콘텐츠를 관리하거나 탐색할 수 있습니다. 구성 UITableView는 테이블의 기본 모양을 관리합니다. 하지만 앱은 실제 컨텐츠를 표시하는 각각의 Cell(UITableViewCell)을 제공합니다. 아래의 셀 구성은 아래 처럼 ..

iOS/Swift 2023.02.04

Swift) NumberFomatter

Swift) NumberFomatter NumberFormatter란? 애플 공식문서에서는 숫자 값과 해당 텍스트 표현 간에 변환하는 포맷터라고 소개하고 있습니다. 조금 더 살펴보는게 좋을 것 같네요. OverView에서 이제 NumberFormatter의 인스턴스는 NSNumber 객체를 포함하는 셀의 텍스트 표현을 포맷하고 숫자 값의 텍스트 표현을 NSNumber 객체로 변환합니다. -> 여기서 NSNumber란 기본 스칼라 숫자 값에 대한 객체 래퍼라고 되어 있는데 추후에 자세히 알아봐야 겠네요. 계속해서 NSNumber는 표현에는 정수, 실수 및 복식이 포함되고, float 및 double은 지정된 소수점 위치로 형식화할 수 있습니다. NumberFormatter 객체는 셀이 허용할 수 있는 숫자..

iOS/Swift 2022.12.02

Swift) 옵저버 프로퍼티를 이용한 데이터 바인딩

데이터 바인딩을 위한 필요한 것에 대해 생각해 보자 프로퍼티 옵저버를 등록한 저장 프로퍼티 프로퍼티 옵저버에 등록되어 값이 변경될 떄마다 호출될 클로저 프로퍼티 생성 특정 행동에 대한 실행 메소드 선언을 위한 @escaping 클로저 함수 예시 코드 데이터 바인딩 실행 순서에 대해 생각해보자 옵저버 프로퍼티에 선언된 클로저 변수 실행 myData 프로퍼티 값 변경 될 때마다 클로저 변수 실행 Why? 옵저버 프로퍼티에 클로저 변수가 선언되어 있어서 이스케이핑 클로저 함수에서 특정 행동을 등록하면 프로퍼티에 변화가 있을 시 실행 예제 코드에서 print()문을 수행할 것을 등록 @escaping 클로저(callback) 실행 Why? myDataListener가 클로저(callback)를 알고 있어 매개변..

iOS/Swift 2022.10.18

Swift) Delegate, Notification 둘 중 어느 것을 사용해야 할까

앱에서 화면 간 데이터 전달을 위해 여러 방식이 있는데 대표적으로 Delegate와 Notification이 있는데 둘 중에 어떠한 상황에서 어떤 것을 쓰는게 좋을까 생각해 보았다. 일단 각 패턴에 대해 알아보자 Delegate Delegate 패턴은 다른 객체의 인스턴스를 내부적으로 가지고 있어 그 인스턴스를 활용하는 방식으로 사용 Notification 값의 변화에 따라 이벤트가 발생해야할 때 이것을 observe 하고 있는 방식으로 사용 구현 방법 및 사용방법 Delegate Delegate를 위한 프로토콜이 필요하다. 이벤트 처리 담당 객체가 알고 있어야함 Notification 값의 변화가 필요한 값에 observe하고 그에 맞는 이벤트만 발생시켜주면 됨 각 패턴의 장단점 Delegate 장점 ..

iOS/Swift 2022.10.12

Swift) Realm 연동하기

Realm 연동하기 1. 터미널 프로젝트 경로로 이동 cd "프로젝트 경로"2. CocoaPod 설치하기 sudo gem install cocoapods3. Podfile 생성 pod init4. Podfile 수정 (RealmSwift 추가) - nano 에디터 사용 sudo nano Podfile4-1. Podfile에 pod 'RealmSwift' 내용 입력 # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' target 'ProjectManager' do # Comment the next line if you don't want to..

iOS/Swift 2022.10.12

Swift) DatePicker

DatePicker UIDatePicker란?? A control for inputting date and time values. -> 날짜 및 시간 값을 입력하기 위한 컨트롤 사용자가 원하는 날짜 및 시간을 선택하기 위한 컨트롤러로 보인다. DatePicker 구성 DatePicker를 구성하는 핵심 속성표 Style: DatePicker의 모양을 결정, datePickerStyle 프로퍼티를 사용하여 런타임에 이 값에 액세스 합니다. 각 Style 적용화면 automatic compact inline wheels 날짜 및 시간 표시 제어 속성 표 Date 기본 속성은 현재 날짜 기준으로 표기, 날짜 속성을 설정하는 것과 동일한 방식으로 수정가능 Constraints 선택 가능한 날짜의 범위, 범위 설..

iOS/Swift 2022.09.10