카메라 촬영을 통한 결과를 FileManager의 document directory에 저장하고, 그 경로를 URL 형식으로 변환하여 S3를 업로드하는 내용입니다. 코코아팟 설치를 해줍니다. # AWS pod 'AWSS3', '~> 2.27.1' poolId를 발급받아 AWSCognitoCredentialsProvider과 AWSServiceConfiguration을 생성 후, Default Service Configuration을 이니셜라이징 해줍니다. func configure() { let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .APNortheast2, identityPoolId: "INSERT-POOL-ID-HERE") g..
클로저의 정의 클로저는 코드에서 전달 및 사용할 수 있는 독립된 기능의 중괄호 "{}"로 구분된 코드 블록이다. python의 람다(lambda)와 유사한 개념이라고 보면 된다. 클로저는 정의된 컨텍스트 내에서 모든 상수 및 변수에 대한 값을 캡쳐하고 레퍼런스를 저장할 수 있다. 클로저의 형태 클로저에는 크게 3가지 형태가 있다. 전역함수(Global functions)의 형태 : 이름이 있고 값을 캡쳐하지 않음. 중첩된 함수(Nested functions)의 형태 : 이름이 있고 둘러싸는 함수에서 값을 캡쳐할 수 있다. 클로저 표현식(Closure expressions) : 이름이 없고 경량 구문(lightweight syntax)으로 쓰이며 주변 컨텍스트에서 값을 캡쳐할 수 있다. 클로저와 함수의 차..
애플 엔터프라이즈 프로그램에 대해 조사하던 중 알게된 정보들을 정리해보았습니다. Apple Enterprise 앱스토어에 공식 출시를 할 수 없는 특정 앱으로 회사 및 조직 내부 사용을 위한 앱 배포를 의미. 대규모 조직은 Apple Developer Enterprise Program을 통해 조직 내부에서만 사용하는 전용 앱을 개발하여 직원에게 배포할 수 있음. 내부 시스템을 이용하여 회사 내 직원들에게 비공개로 배포하여 이용할 수 있다. 앱스토어에 배포 불가능! 자격 요건 직원 100명 이상 법인 자격이어야 함. 사내에서만 사용하는 전용 앱을 생성하여 조직 내의 직원에게 비공개로 안전하게 배포하기 위한 용도로만 사용해야 함. Apple의 확인 인터뷰 및 지속적인 평가 절차에 참여하고 통과해야 함. (참..
How to create iOS Framework 애플은 코드 공유를 쉽게하기 위해 프레임워크라는 도구를 제공합니다. 뿐만 아니라 코드를 그룹화(모듈화)하고, 코드 접근을 제어하는(캡슐화) 매커니즘을 제공해줍니다. 앞서 제작해본 CocoaPod, SPM 제작 방식을 활용하여 iOS Framework를 만들어볼게요! 프레임워크 예제 본 포스팅은 raywenderlich 사이트의 'Creating a Framework for iOS' 튜토리얼을 바탕으로 작성되었습니다. 예제 파일은 아래 링크에서 확인해보실 수 있습니다. https://www.raywenderlich.com/17753301-creating-a-framework-for-ios Creating a Framework for iOS Learn how..
스위프트 패키지 매니저 라이브러리 만들기 Package.swift 파일 생성 스위프트 패키지 매니저를 이용하려면 Package.swift 파일만 추가해주면 된다. 앞서 만든 라이브러리(코코아팟) 디렉토리 위치에서 아래 명령어를 실행하여 Package.swift 파일을 생성해준다. https://miiiiiin-devlog.tistory.com/5 touch Package.swift Package.swift를 열어 아래 코드를 입력해준다. 단 Package.swift는 꼭 swift-tools-version 항목을 명시해주어야 한다. swift-tools-version의 버전은 PackageDescription 라이브러리의 버전을 의미한다. // swift-tools-version:5.1 import Pa..
iOS 라이브러리 제작기 iOS에서의 의존성 관리도구 현재 iOS 애플리케이션 개발 환경에서 쓰여지는 의존성 관리도구는 아래 3가지 정도가 있다. Cocoapods(코코아팟) Carthage(카르타고) Swift Package Manager(스위프트 패키지 매니저) 참고자료 https://yagom.net/courses/open-source-library/ https://guides.cocoapods.org/making/index.html 코코아팟 라이브러리 제작 코코아팟 프로젝트 생성 pod lib create StepProgressIndicatorView 원하는 디렉토리 안에서 pod lib create {라이브러리명} 명령어를 실행한다. 프로젝트 설정 프로젝트 생성에 앞서 플랫폼, 언어, 데모 앱 ..
[2교시] RxSwift 활용하기 - 쓰레드의 활용과 메모리 관리 1. Merge: Observable 여러개를 묶어서 하나의 Observable로 만들어줌. 2. Zip: 위 아래 데이터가 하나씩 생성되면 그것들을 쌍으로 하나 만들어서 내려줌. 3. CombineLatest: 쌍이 하나 없으면 못내려가는 zip과 달리 가장 최근에 나온 것과 쌍으로 만들어줌. // zip: Observable들을 합쳐서 처리 let jsonObservable = downloadJson(MEMBER_LIST_URL) let helloObservable = Observable.just("hello world") _ = Observable.zip(jsonObservable, helloObservable) { $1 + "\n"..
유튜브 곰튀김님 강의를 토대로 RxSwift의 기초를 정리해보았습니다. 개인 공부 목적으로 정리한 내용이라 부족한 부분이 있거나 오류가 있을 수도 있으니 언제든 알려주시면 정정하도록 하겠습니다. [1교시] 개념잡기 - RxSwift를 사용한 비동기 프로그래밍 RxSwift 사용 이유 중 하나로는 비동기적으로 생기는 결과값을 리턴값으로 전달하기 위해서이다. (나중에 생기는 데이터를 리턴값으로 전달) 기존 : 비동기로 생성되는 데이터를 처리하기 위해 completion 등을 만들어 전달했었음. 그러나 completion이 아닌 return 값으로 전달을 해주고 싶었음. class Observable/*나중에생기는데이터*/ { //나중에 생기는 데이터 private let task: (@escaping (T)..