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

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

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가 설치되지 않았다면 터미널 실행 후 아래 커맨드를 이용해 설치합니다. 인텔(Intel) CPU가 설치된 맥 sudo gem install cocoapods   더보기…

Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드)

Swift(스위프트): 카메라 및 사진 라이브러리 권한 물어보기 + UIImagePickerController를 이용한 사진 추가 (스토리보드) 기본적으로 아래 글과 동일한 내용이나 사용성이 개선되었습니다. Swift (스위프트): 사진 라이브러리, 카메라 사용 (스토리보드)   코드 목록 코드에 대한 설명은 밑에 있습니다. This file contains bidirectional Unicode text that may be interpreted or compiled differently than what 더보기…

Swift(스위프트): Codable을 사용하여 사용자 정의 오브젝트를 UserDefaults에 저장 (프로토콜 지향 접근 방식)

원문 Save custom objects into UserDefaults using Codable in Swift 5.1 (Protocol Oriented Approach)   Swift(스위프트): Codable을 사용하여 사용자 정의 오브젝트를 UserDefaults에 저장 (프로토콜 지향 접근 방식) iOS는 Int, String, Float, Double, Bool, URL, Data 또는 이러한 유형의 컬렉션과 같은 UserDefaults에 직접 저장할 수 있는 여러 유형의 객체를 지원합니다. 하지만 더보기…

Swift(스위프트): 컬렉션 뷰의 셀을 길게 누르면(long press touch) 애니메이션 나타나도록 하기

참고 iOS 프로그래밍: 컬렉션 뷰 (Swift, 스토리보드) – 컬렉션 뷰 추가, 커스텀 셀 작성   Swift(스위프트): 컬렉션 뷰의 셀을 길게 누르면(long press touch) 애니메이션 나타나도록 하기 개요 기존의 프로젝트 코드를 기반으로 롱 프레스 터치(길게 터치하기) 작업을 추가하고, 롱 프레스 시에 셀이 살짝 작아졌다 놓으면 다시 원상 복귀하는 애니메이션이 추가되도록 만들어 더보기…

Swift(스위프트): 배열의 reduce

Swift: 배열의 reduce 스위프트(Swift)에서 배열(Array)의 reduce 기능은 배열을 순회하면서 누산기(accumulator)에 값을 계속 쌓아놓고 최종적으로 누산기의 값을 반환하는 reducer의 기능을 수행하는 고차 함수입니다. reducer의 사전적 의미와 매칭이 잘 안되는데 어떤 물질에서 원액(누산기의 값)만 추출한다는 의미로 생각하면 될 것 같습니다. 누산기의 값은 줄어들지 않으며 리턴식은 누산기에 합산됩니다. 그리고 마지막까지 순회한 후 최종적으로 누산기의 값만을 반환한다는 특성을 더보기…

Swift(스위프트): 이미지를 그레이스케일로 변환

원문 Tutorial: Convert Images to Grayscale in Swift   개요 이 글에서 이야기하는 Swift의 이미지에 그레이스케일 적용하는 세 가지 방법은 다음과 같습니다. 그레이스케일로 변환 가능하지만 화질을 유지하려면 시간이 걸리는 CIFilter 시간이 덜 걸리고 한 번에 여러 이미지에 적용할 수 있지만 투명한 요소(transparent elements)를 색상으로 바꾸는 CoreGraphics 필터 Swift UI에서 View에 더보기…