개발/Swift
-
LiveActivity - Push Console로 테스트 해보기개발/Swift 2024. 10. 19. 17:13
푸시토큰 let activity = try Activity.request(attributes: activityAttributes, content: content, pushType: .token) print("activity.id \\(activity.id.lowercased())") Task { for await pushToken in activity.pushTokenUpdates { let pushTokenString = pushToken.reduce("") { $0 + String(format: ..
-
LiveActivity Dynamic island 구현하기개발/Swift 2024. 10. 16. 16:40
https://inf.run/iDaq4 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | 복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. , SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대www.inflearn.com Widget 기본 구조import WidgetKitimport SwiftUI@available(iOS 16.1, *)@mainstruct LivaActivityBundle: WidgetBundle { var body: some Widget { LivaActivityLive..
-
Tuist활용하여 멀티 모듈 SwiftUI 프로젝트 생성하기개발/Swift 2024. 10. 15. 22:26
https://inf.run/iDaq4 SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대 iOS 아키텍처 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | 복잡한 SwiftUI 상태 관리, TCA (The Composable Architecture)로 깔끔하고 견고한 앱을 만드세요. 실전 프로젝트 예제로 핵심만 빠르게 배웁니다. , SwiftUI + TCA: 실전 프로젝트로 완성하는 차세대www.inflearn.com tuist init --platform ios --template swiftuituist init --platform ios --template swiftui 명령어를 사용하여 SwiftUI 용으로 프로젝트를 초기화합니다. 이때, 명령어는 반드시 빈 폴더에서 실행해야 합니다. tuist ..
-
Label Attribute 이미지 처리, 줄넘김 하기개발/Swift 2024. 9. 12. 13:53
https://inf.run/V3b51 iOS Clean Architecture & MVVM: RxSwift 완전 정복 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | , iOS Clean Architecture & MVVM: RxSwift 완전 정복현업에서 Clean Architecture와 MVVM 패턴은 이미 널리 사용되고 있으며, 많은 채용 공고에서도 필수 역량으로 요구되고 있습니다. 이 강의는 Clean Arwww.inflearn.com 요구사항이미지 + 텍스트 + 이미지 + 텍스트 + 강조텍스트 + 텍스트 형태의 레이아웃 구현이 필요영역을 넘어갈경우 다음줄로 넘어가면 되는데 그런경우 강조텍스트 + 텍스트 이부분이 같이 다음줄로 넘어가야함1줄2. 2줄일 경우 해결 방법이미지와 텍스트를 따로 구현하기에는 ..
-
Contact Framework 사용하여 연락처 불러오기개발/Swift 2024. 9. 3. 15:05
연락처를 불러 오기 위해서는 연락처 권한이 필수임CNContactStore().requestAccess(for: .contacts) { isGranted, _ in}연락처 권한 허용 여부는 이후로 이렇게 확인 가능CNContactStore.authorizationStatus(for: .contacts) == .authorized권한 허용 이후에는 contact 를 통해 연락처에 접근 가능함static private func getNewContacts() async -> [String: String] { let contactStore = CNContactStore() guard (try? await contactStore.requestAccess(for: .contacts)) ==..
-
Compositional Layout+ Diffable Datasource 활용 가이드개발/Swift 2024. 8. 27. 18:33
Section 영역 은 3가지 타입이며enum 내부에서 각각 레이아웃을 들고 있도록 하여 viewcontroller의 복잡도를 낮추었다.public enum FAQSection: Hashable { case tag case faq case bottomGuide public var layoutSize: NSCollectionLayoutSection { switch self { case .tag: let itemSize = NSCollectionLayoutSize(widthDimension: .estimated(50), heightDimension: .a..
-
[Error] Diffable Datasource 사용중 겪은 여러 에러 해결개발/Swift 2024. 8. 26. 18:02
does not conform to protocol 'Equatable'Diffable Datasource의 section 과 item 을 구성 하려면 Hashable 준수를 해야하는데Associated Value Enum의 경우 Hashable를 준수 하지 않음 따로 넣어줘야함 근데 전달 하고자 하는 값ex> tag item, faq item이 struct 형태가 아니라 protocol 을 사용하여 넘겨주고 있음 여기서 에러 발생protocol 이 Hashable를 준수 했음에도 에러는 여전히 발생함public enum FAQSectionItem: Hashable { case tag(tag: any FAQTagDisplayable, isSelected: Bool) case faq(item..
-
[Error] suspend resume partial function for XXX개발/Swift 2024. 8. 20. 14:39
“suspend resume partial function for 함수명”라는 에러 발생 원인 파악 public func isFeatureEnabled(_ featureToggle: FeatureToggles) -> Bool { return featureToggles[featureToggle.value.key] }let keyword is a constant and, therefore, read-only and thread-safe. When a variable is declared as var it becomes mutable and not thread-safe unless the data type is specifically designed to be thread-sa..