Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시

Swift(스위프트): DateFormatter로 시간대 약어(Timezone abbreviation) 표시   TimeZone.current.identifier와 TimeZone.abbreviationDictionary를 사용하면 시간대 약어를 표시할 수 있습니다. func dateString(timestamp: Int) -> String { let date = Date(timeIntervalSince1970: TimeInterval(timestamp)) let formatter = DateFormatter() formatter.timeZone = .autoupdatingCurrent formatter.dateFormat = “yyyy-MM-dd HH:mm:ss” let timezoneAbbr = TimeZone.abbreviationDictionary.first { $1 == formatter.timeZone.identifier } // timezoneAbbr?.value는 Asia/Seoul, timezoneAbbr?.key는 더보기…

Swift(스위프트) + Firebase: 사용자 정의 struct(구조체)를 사용한 Firestore CRUD 기초

Swift(스위프트) + Firebase: 사용자 정의 struct(구조체)를 사용한 Firestore CRUD 기초   실시간 데이터베이스 vs Cloud Firstore 비교 Firebase에서는 두 가지 형태의 데이터베이스를 제공합니다 이 글에서는 Cloud Firestore에 대해 알아봅니다. 데이터베이스 선택: Cloud Firestore 또는 실시간 데이터베이스   Firestore에서 자료를 저장하는 일반적인 형태     컬렉션 – 문서들을 모아 저장하는 곳입니다. 더보기…

Swift(스위프트): Static cell 모드인 테이블 뷰(UITableView)에서 특정 섹션 감추기 + 특정 행의 크기만 조절

Swift(스위프트): Static cell 모드인 테이블 뷰(UITableView)에서 특정 섹션 감추기 Static Cell 모드란 아래와 같이 content mode가 Static Cells로 지정된 경우로 데이터 모델에 따라 셀의 개수등이 변동하는 일반적인 테이블 뷰와 달리 셀의 개수, 위치 등이 고정되어 있는 경우를 말합니다. 이 경우 코드 작성 대신 스토리보드에서 셀 개수, 섹션 개수를 설정하게 됩니다. 더보기…

Swift(스위프트): 테이블 뷰(UITableView)에서 setEditing이 true일때만 삭제 등 작업 가능하게 하기

출처 How do I disable the full swipe on a tableview cell in iOS11   Swift(스위프트): 테이블 뷰(UITableView)에서 setEditing이 true일때만 삭제 등 작업 가능하게 하기 제목이 대체 무슨 말인가 하면 아래 화면과 같이 Edit 버튼이 있어 에디트 모드가 따로 있는 예제 앱이 있습니다. 테이블 뷰의 에디트 모드가 모든 열(row)에 활성화되어 있는 더보기…

Swift(스위프트): 제네릭(Generics) – 제네릭 타입, 제네릭 함수, 연관 타입(Associated Type), where 조건절

출처 Generics – The Swift Programming Language    제네릭 (Generics) 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식입니다. 예를 들어, Swift의 Array와 Dictionary 유형은 모두 제네릭 컬렉션입니다.   제네릭이 해결하는 문제 swap(교환) 함수를 구현하고자 합니다. swap은 더보기…

자바스크립트 + abcjs: 노트 프로그래밍 방식으로 하이라이트, 노트 선택(클릭) 방지하기

노트 프로그래밍 방식으로 선택 먼저 ABCJS.renderAbc의 옵션 파라미터에서 add_classes가 true여야 합니다. (아래 노트 클릭(선택) 방지하기 단락의 코드 참조) add_classes: true,   추가하였다면 아래 클래스 목록을 참고하여 abcjs-[클래스이름] 의 HTML DOM에 abcjs-highlight 클래스를 추가하면 됩니다. (태그 이름은 <g>)   예를 들어 악보에서 네 번째 노트의 클래스 이름은 abcjs-n3 입니다. 0부터 시작(zero-based)이므로 더보기…

Swift(스위프트): 앱 최초 설치 후 한 번만 실행하는 작업, 버전 업데이트시에만 실행하는 작업 만들기

Swift(스위프트): 앱 최초 설치 후 한 번만 실행하는 작업, 버전 업그레이드시에만 실행하는 작업 만들기 1: 아래 코드를 프로젝트 내에 추가합니다. import Foundation func checkAppFirstrunOrUpdateStatus(firstrun: () -> (), updated: () -> (), nothingChanged: () -> ()) { let currentVersion = Bundle.main.object(forInfoDictionaryKey: “CFBundleShortVersionString”) as? String let versionOfLastRun = UserDefaults.standard.object(forKey: “VersionOfLastRun”) as? String 더보기…

RxSwift(ReactiveX + Swift): 기본 개념 및 스토리보드 예제 (요약)

RxSwift(ReactiveX + Swift): 기본 개념 및 스토리보드 예제   기본 용어 명령형 프로그래밍 (Imperative Programming) 컴퓨터가 실행할 명령을 순차적으로 작성하는 프로그래밍 방식입니다. 선언적 프로그래밍(Declarative Programming)과 대조적인 방식입니다.   예제 코드 let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] var numbersLessThanFive: [Int] = [] for index in 더보기…

Xcode 프로젝트에 이미지 자르기(crop) 기능 추가: iOS Swift 라이브러리 Mantis 사용 (스토리보드)

Xcode 프로젝트에 이미지 자르기(crop) 기능 추가: iOS Swift 라이브러리 Mantis 사용 카메라 또는 사진을 선택하면 화면에 보여주는 프로젝트가 있는데, 여기서 선택 후 화면에 표시하기 전 크롭(crop) 기능을 이용해 이미지를 자르는 기능을 추가하고자 합니다. Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드)   직접 구현하려면 매우 더보기…

Xcode 프로젝트에 코코아팟(CocoaPods) 설치 및 디펜던시 추가 방법

Xcode 프로젝트에 코코아팟(CocoaPods) 설치 및 디펜던시 추가 Xcode를 이용해서 iOS 프로젝트 등을 개발할 때 서드파티 라이브러리를 사용할 일이 많은데, 대다수 라이브러리들이 CocoaPods(코코아팟)라는 디펜던시 관리자를 이용해 프로젝트 내에 설치해야 합니다.   1. CocoaPods가 설치되지 않았다면 터미널 실행 후 아래 커맨드를 이용해 설치합니다. $ sudo gem install cocoapods   2. 터미널을 실행한 더보기…