본문 바로가기

iOS

(115)
[iOS] Core Data Core Data iOS 앱을 개발할 때 내부에 데이터를 저장하여 활용하는 방법 중 오픈 소스를 활용하지 않는 방법은 대표적으로 2가지가 있다. UserDefault 와 CoreData 가 존재한다. 하지만 두 기능은 목적이 다르며 쓰임새도 당연히 다르다. UserDefault 는 이름 그대로 사용자의 기본적인 설정값, 상대적으로 가볍고 복잡하지 않은 데이터를 저장하기 위한 기능이고 CoreData 는 UserDefault 보다는 더 복잡하고 무거운 데이터를 처리하기에 적합하다. OverView 코어 데이터를 사용하여 오프라인 사용을 위해 애플리케이션의 영구 데이터를 저장하고 임시 데이터를 캐시한다. 코어 데이터의 Data Model Editor를 통하여 우리는 데이터의 타입과 관게를 지정할 수 있다. ..
[iOS] Storyboard vs Code-based UI & DispatchQueue UI 업데이트를 반드시 mainQueue 에서 진행해야 하는 이유 Cocoa Touch 앱에서 UIApplication의 인스턴스 가 메인 스레드에서 작동하기 때문이다. UIApplication 은 앱을 시작할 때 인스턴스화 되는 앱의 첫번째 부분이다. 앱의 main event loop는 touch, gesture 등의 모든 UI event를 수신한다. 즉, UI 와 관련된 모든 event가 main thread에 attach 하기 때문에, 반드시 main에서 해야하는 것이다. 스토리보드 vs 코드 기반 UI의 차이 애플은 스토리보드 사용을 권장한다. 아마 미래에는 스토리보드 기반의 UI작성이 표준이 될 것으로 예상된다. 그러나 스토리보드를 사용하여 UI 작업을 진행하는 것은 몇몇 단점이 존재한다. 각각..
[iOS] Codable and JSON Encoder & Decoder Codable 그리고 JSON Encoder & Decoder Codable typealias Codable = Decodable & Encodable 인코딩 : 정보의 형태 또는 형식을 다른 형태, 형식으로 변환하는 처리 방식 디코딩 : 인코딩의 반대 작업 Codable은 스위프트의 인스턴스를 다른 데이터 형태로 변환하고 그 반대의 역할을 수행하는 방법을 제공해준다. 스위프트의 인스턴스를 다른 데이터 형태로 변환하는 것을 Encodable 프로토콜에 표현하였고, 그 반대로 다른 데이터 형태를 스위프트 인스턴스로 변환하는 것을 Decodable로 표현하였다. Example Coordinate 타입과 Landmark 타입의 인스턴스를 다른 데이터 형식으로 변환(인코딩)하고 싶은 경우, Codable 프로토..
[iOS] Searchable TableView Searchable TableView 이번에는 지난 시간에 진행했던 테이블 뷰에서 한 가지 개념을 응용해보고자 한다. 검색창을 추가하여 검색 쿼리에 따라 적절한 데이터를 출력해주는 테이블 뷰를 만들어보자. 예제 코드는 아래와 같다. import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { @IBOutlet var table: UITableView! @IBOutlet var field: UITextField! // 기존 데이터 var data = [String]() // 쿼리 결과에 따른 데이터 var filteredData = [String]() //..
[iOS] Sections, Headers, Footers in TableView Secitons, Headers, Footers in tableView 이번에는 tableView 내에 존재하는 Sectioons, Headers, Footers에 대해 알아본다. tableView 구현을 위해 UITableViewDelegate, UITableViewDataSource 프로토콜을 채택한다. 예시 코드는 아래와 같이 작성하였다. import UIKit class ViewController: UIViewController { // Connect UITableView @IBOutlet var tableView: UITableView! let data = [ ["Apple", "MacOS", "iOS", "IpadOS"], ["one", "two", "three", "four"] ] overr..
[iOS] GCD (Grand Central Dispatch) GCD (Grand Central Dispatch) GCD란? GCD는 멀티 코어 환경에서 최적화된 프로그래밍을 지원하도록 애플이 개발한 기술 이라고 한다. 일반적으로 우리는 GCD를 Dispatch Queue라고 부른다. Dispatch Queue에 대하여 살펴보기 이전에 Serial Queue, Concurrent Queue, Sync, Async에 대하여 살펴본다. Serial Queue, Concurrent Queue 큐 자료구조는 우리가 알고있는 FIFO 형태의 자료구조를 의미한다. Serial & Concurrent Queue 모두 작동방식은 FIFO를 따른다. 그러면 직렬 큐(Serial Queue)와 동시 큐(Concurrent Queue)는 과연 무엇인지 먼저 살펴보자! 직렬 큐는 분산처..
[iOS] Alamofire 소개 및 데모 예제 Alamofire Alamofire를 사용해보면서 공부한 내용을 정리한다. Alamofire는 Swift에서 HTTP 통신을 하기 위해 이용되는 대표적인 오픈소스 라이브러리다. Alamofire가 제공하는 간략한 기능 소개는 아래와 같다. Request & Response 의 체이닝 함수 제공 URL / JSON 형태의 파라미터 인코딩 File / Data / Stream / MultipartFormData 등 업로드 기능 HTTP Response의 Validation Request Request란, 이름 그대로 요청을 보내기 위해 사용하는 함수이다. Alamofire.request에는 다양한 인자가 존재한다. 기본 사용법 Alamofire.request("URL") HTTP Methods - metho..
[iOS] get, set, didSet, willSet in Swift get, set, didSet, willSet with Swift 본 내용을 살펴보기에 앞서 프로퍼티 값을 연산하여 저장하는 Computed Property에 대하여 미리 알고 있어야 한다. 이번 시간에는 Swift에서 프로퍼티 초기화에 있어 이용되는 get, set, didSet, willSet 에 대하여 알아보자! 각각의 키워드를 보면 대략적인 느낌이 오듯 이는 일반적으로 OOP 패러다임에서 사용하는 getter, setter 메서드다. 즉, 프로퍼티 값을 초기화하고 이를 가져오는 기능을 제공한다. get, set in Swift Swift 내에서 get,set 은 일반적으로 우리가 쓰는 getter, setter 와 매우 유사하다. 간단하게 예시를 살펴보도록 한다. var testProperty: ..