apple/iOS, UIKit, Documentation 82

CloudKit(iCloud) 정리 이론 #2

CloudKit(iCloud) 정리 이론 #2CloudKit 정리 환경설정 #1https://rldd.tistory.com/607CloudKit 정리 이론 #2https://rldd.tistory.com/619CloudKit 정리 코드 예제 #3https://rldd.tistory.com/631 Intro- CloudKit Console 분석- Schema   - Indexes   - Record Types   - Security Roles   - History- Data   - Records   - Zones   - Subscriptions - CKSyncEngine (iOS 17이후) Schema메타데이터 • createdTimestamp: 생성한 시각 (DATE/TIME)• createdUserRe..

[UIKit] appearance callbacks (화면 전환시 LifeCycle)

[UIKit] appearance callbacks (화면 전환시 LifeCycle) 기본적으로 UIKit에서 ViewController의 라이프 사이클은 위의 형태로 진행된다.  화면 전환 일반적인 경우 화면전환 과정에서 특별한 사용자의 액션이 없을 경우에는  (사용자의 액션이 없는 일반적인 경우)> push: Disappeared에서 시작해서 Appearing과정을 따름.> pop: Appeared에서 시작해 Disappearing과정을 따름.  (pop 과정 중 사용자의 인터렉션에 의해 취소된 경우)-> 사용자가 화면을 팝하려고 하다가 놓은 경우 즉, viewWillDisappear과 viewDidDisAppear사이이 경우에는 뷰가 바로 Disappeared 상태로 이동한 다음 사이클을 거치면서 ..

[UIKit] reloadSections에서 애니메이션 없애는 방법

reloadSections에서 애니메이션 없애는 방법 UITableView 혹은 UICollectionView를 사용할 때 reloadData()가 아니라 특정 섹션만 업데이트하는 reloadSections()를 사용할 수 있음. 특정 섹션만 업데이트 하는 것은 이점도 존재하나, 애니메이션이 들어가게 되어서 원하는 UX 결과물이 아니거나, 방송 실시간 채팅처럼 매우 빠른 속도로 데이터가 들어와 UI를 업데이트가 진행되는 경우 UI가 블락되거나, 심지어는 크래시가 발생하기도 함. Task { @MainActor [weak self] in guard let self else { return } UIView.performWithoutAnimation { self.reloadSections(in..

[Swift] JSON 형태로 바꾸는 방법

JSON 형태로 바꾸는 방법 서버에서 JSON으로 만들어서 올려달라고 해서, 구조체를 특정 키 값을 지정해서 올리기 위해 학습한 부분  아래는 JSON으로 바꾸는 코드extension Encodable { /// 인코딩 가능한 문자열을 JSON 직렬화 var jsonSerialized: String? { let jsonEncoder = JSONEncoder() do { jsonEncoder.outputFormatting = .withoutEscapingSlashes let jsonData = try jsonEncoder.encode(self) return String(data: jsonData, encoding..

CloudKit(iCloud) 정리 환경세팅 #1

CloudKit(iCloud) 정리 환경세팅 #1  CloudKit 정리 환경설정 #1https://rldd.tistory.com/607CloudKit 정리 이론 #2https://rldd.tistory.com/619CloudKit 정리 코드 예제 #3https://rldd.tistory.com/631 1. XCode에서 iCloud를 사용할 수 있도록 추가. 2. Apple Developer 사이트에서 해당하는 앱에 App Regiser에서 iCloud 체크 3. 체크 후 configure 눌러서 해당 앱 번들에 컨테이너 등록 4. 컨테이너 등록이 정상적으로 수행되었다면 위처럼 추가되어 있음. 5. 이미지 캡션란 링크를 누르면 대시보드 활성화 된 상태- https://icloud.developer.ap..

[iOS] infinite carousel DiffableDataSource + CompositionalLayout

[iOS] infinite carousel DiffableDataSource + CompositionalLayout UIKit에서 DiffableDataSource과 compositonalLayout을 사용하여 구현해보자. 전체 소스코드와 해당 코드에 대한 주석을 포스팅 제일 하단에 전부 넣어두었음. 예제 영상 무한히 회전하는 스크롤 뷰에 대한 구현 아이디어는 이미 많이 존재하나, 해당 포스팅에서는 diffableDataSource의 특성에 맞게끔 적용 (구현 방식) [앞에 붙는 id만 다른 원본] + [원본] + [뒤에 붙는 id만 다른 원본]을 먼저 구성한 후 한번에 apply diffable의 경우에는 데이터가 변경되었을 때, snapshot을 수정하는게 아닌 다시 찍음. 해당 부분은 iOS 13,..

[Swift] New access modifier: package

New access modifier: package Introduction 현재 다른 모듈에서 특정 심볼에 접근하기 위해서는 public으로 정의되어야 함. public 패키지 내외부 모두에서 접근 가능하기에 바람직하지 않음. 따라서 새로운 접근제어자를 만들어 심볼의 범위를 더 명확하게 하고자 함. Swift 5.9에서 도입 Motivation Module Engine in gamePkg: public struct MainEngine { public init() { ... } // `public`으로 의도된 프로퍼티 public var stats: String { ... } // 동일한 패키지의 `Game`에서만 접근할 수 있는 `run` 함수 public func run() { ... } } Modul..

[Natural Language] 텍스트 간 유사점 찾기

[Natural Language] 텍스트 간 유사점 찾기 Swift 언어를 사용해 단어 또는 문장 사이의 의미적 거리를 계산 단어나 문장 간의 의미적 유사성을 찾으면 앱의 사용자 환경을 개선하는 데 도움이 될 수 있음. 예를 들어, 검색어 '구름'이 '하늘'이라는 단어와 관련이 있다는 것을 알고 검색어를 확장하여 더 관련성 높은 결과를 표시함으로써 특정 사진을 검색하는 경험을 개선가능. 자연어 텍스트 사이의 유사점을 찾으려면 텍스트 임베딩을 사용. 임베딩은 단어 또는 문장과 같은 문자열을 벡터 공간에 매핑하는 것으로, 의미적으로 유사한 문자열은 벡터가 유사하므로 벡터 공간에서 서로 더 가까움. - 즉, 0에 가까울수록 유사함. 임베딩은 다음과 같은 작업에 사용 예를 들어, 검색 쿼리를 확장하기 위해 주어..

[Natural Language] Overview

[Natural Language] Overview - Overview - tokenizing-natural-language-text - identifying-the-language-in-text 자연어 텍스트를 분석하고 언어별 메타데이터 추론 자연어 프레임워크는 다양한 언어와 스크립트를 지원하는 다양한 자연어 처리(NLP) 기능을 제공. 이 프레임워크를 사용하여 자연어 텍스트를 단락, 문장 또는 단어로 분류하고 품사, 어휘 클래스, 어휘, 스크립트 및 언어와 같은 해당 세그먼트에 대한 정보에 태그를 지정할 수 있음. 이 프레임워크를 사용하여 다음과 같은 작업을 수행 - 언어 식별, 텍스트의 언어를 자동으로 감지 - 토큰화, 텍스트 조각을 언어 단위 또는 토큰으로 나누는 작업 - 품사 태깅: 개별 단어에 ..