기존 Local CoreData 영구 저장소를 iCloud에 연동 가능하도록 수정함.이는 기존에 NSPersistentContainer를 NSPersistentCloudKitContainer로 변경해주면 자연스럽게 CloudKit으로 사용이 가능합니다.NSPersistentCloudKitContainer는 NSPersistentContainer를 상속받기 때문에 교체해도 아무런 문제 없이 사용이 가능합니다.Local CoreData로 사용하던 것을 iCloud 동기화 sync 기능을 추가현재까지 알아낸 바로는, 유저가 iCloud 연동을 원하는지 여부를 bool 값으로 저장하고 있다는 가정하에 (UserDefaults에 저장) 이 값을 바탕으로persistentContainer(type: NSPersis..
함수형 프로그래밍함수가 1등 시민(first-class citizen)함수를 타입으로 지정하거나, 인자값으로 넘기거나, 리턴 값으로 받을 수 있다.마치 함수도 객체처럼 변수나 함수의 인자, 리터럴하게 다룰 수 있다 는 것1등 시민 함수람다 계산 Lambda Calculus불변성 Immutable심볼의 값이 변경되지 않는다가변 변수를 사용하는 대신에 심볼에 값을 할당하면 그 값은 변하지 않음→ 변수 값이 변경되는 경우 해당 변수가 가리키고 있는 주소의 값은 변하지 않고, 새로운 주소에 변경된 값을 넣고 그 주소를 바라보게 한다.→ 원본은 변하지 않는다!순수 함수 pure function입력 값이 동일하면 결과 값이 동일하게 리턴되는 함수참조투명성과 부작용순수 함수로 만들면 함수 외부에 값이나 객체를 참조하..
비동기 처리 문법비동기 처리 방법콜백(Callback) 함수비동기 작업이 완료되면 호출되는 함수를 지정하여 사용작업의 결과를 처리하거나 다음 작업을 수행하는데 사용비동기 작업의 인자로 전달되어 작업이 완료되면 호출Delegatecompletion 클로저Async/await 이전에 사용CompletionHandler의 사용으로 콜백이 연속되어버리는 코드가 많아지는 문제가 생김Async/await비동기 작업을 동기적으로 처리하는 것처럼 보이게 하는 문법적인 구조async 키워드를 함수 앞에 붙이고, 비동기 작업을 수행하는 부분에 await 키워드를 사용await 는 비동기 작업이 완료될 때까지 함수의 실행을 일시 중지하고, 작업이 완료되면 결과를 반환await 로 마킹된 곳은 potential suspens..
오늘은 Swift의 Core Data에 대해서 알아보려고 합니다!CoreData란?앱의 영속적인 데이터를 저장임시 데이터를 캐싱단일 장치에서 앱에 undo 기능을 추가할 수 있도록 함 간단히 말해서 Core Data는 로컬 데이터를 저장할 수 있는 공간(Like SQLite)이라고 생각하면 편할 것 같습니다!(엄밀히 말하면 DB는 아니고 애플에서는 Object Graph 라고 하지만요!)Persistence(영속성)?CoreData는 객체를 저장소에 매핑하는 세부 정보를 추상화 합니다.이는 데이터베이스를 직접 관리하지 않고 Swift, Objective-C에서 데이터를 쉽게 저장할 수 있도록 합니다. Core Data Stack NSPersistentContainer앱의 코어 데이터 스택을 캡슐화한 컨..
방학때 기업 인턴을 했는데, 회사에서 macOS Native 앱 위에 Electron 앱을 얹을 계획이 있어서 일렉트론 앱과 네이티브 앱간 통신하는 방법에 대해 학습을 해야 했습니다!제가 찾았던 방법은 총 두 가지가 있었는데요! 😮DeepLink 통신Local Server 통신이 있었는데, 지금은 DeepLink만 설명해보겠습니다!DeepLinkDeepLink란?사용자를 특정 앱으로 이동시켜서 원하는 화면을 보여주거나, 사용자 액션을 유도하는 것(주소)예시를 들어서 설명해볼게요!Swift에서는Targets → info → URL Types에서 custom scheme을 추가할 수 있는데요, 이렇게 custom scheme을 만들어 놓으면 my-app:// 을 주소창에 입력하거나 해당 주소로 요청을 보내..
오늘은 Swift의 서브 스크립트(subscript)에 대해서 알아보려고 합니다! 사실은 Struct와 Class의 차이에 대해 포스팅을 하려고 관련 자료를 찾아보다가 두 개의 공통점으로 서브 스크립트 구문을 사용하여 값에 접근을 제공하는 서브 스크립트 정의 라는 문장이 보이더라구요!그래서 먼저 서브 스크립트에 대해서 학습을 하고 나서 Struct와 Class 의 차이에 대해서 포스팅을 해보려고 합니다! 1. 서브 스크립트란?콜렉션의 요소에 접근합니다.클래스, 구조체, 그리고 열거형은 콜렉션, 리스트, 또는 시퀀스의 멤버 요소에 접근할 수 있는 단축키인 서브 스크립트 (subscripts) 를 정의할 수 있습니다. 설정과 검색을 위한 별도의 메서드 없이 인덱스로 값을 설정하고 조회하기 위해 서브 스크립트..
오늘은 구조체와 클래스를 비교해보려고 합니다! 1. 구조체와 클래스의 비교먼저 구조체와 클래스의 공통점은 다음과 같은데요!구조체와 클래스의 공통점값을 저장하는 프로퍼티 정의기능 제공을 위한 메서드 정의서브 스크립트 구문을 사용하여 값에 접근을 제공하는 서브 스크립트 정의초기화 상태를 설정하기 위한 초기화 정의기본 구현을 넘어 기능적 확장을 위한 확장특정 종류의 표준 기능을 제공하는 프로토콜 준수서브 스크립트는 익숙하지 않은 개념이라 다음에 포스팅 해보려고 합니다! 차이점은 다음과 같습니다!구조체와 클래스의 차이점구조체 (Struct)값타입변수 또는 상수에 할당될 때나 함수에 전달될 때 값이 복사열거형도 값 타입이다.클래스 (Class)참조타입변수 또는 상수에 할당될 때나 함수로 전달될 때 복사되지 않음복..