분류 전체보기
-
TCA에서 AsyncStream 사용해서 타이머 구현하기개발/Swift 2025. 1. 15. 23:18
타이머를 구현 해야 했습니다TCA + SwiftUI 기반으로 구현중이라 여기에 걸맞게 구현해야 합니다그래서 Reducer에서 타이머를 구현하고 카운트다운 State를 설정하여View에서 바인딩하는 방식으로 구현하려 합니다 우선 AsyncStream 사용해본적이 없어서 이거부터 만들어봤습니다간단히 60 부터 0까지 반복문 + Task.sleep을 넣어 1초마다 호출되도록 하였습니다Task { for i in (0...59).reversed() { try await Task.sleep(nanoseconds: 1_000_000_000) print(i) }}// 59..58..57..56이제 저 i를 AsyncStream 에 담아서 계속 전송해주도록 할겁니다private func t..
-
[Tuist] 모듈 생성 과 모듈 내 테스트 타겟 생성개발/Swift 2025. 1. 14. 22:07
모듈을 생성해서 개발할 예정이다(Tuist edit 한 후)메인앱 타겟을 보면 여러 디펜던시들이 세팅되어있다외부 라이브러리를 포함한다dependencies: [TargetDependency] { return [ .external(name: "AdFitSDK"), .external(name: "AMPopTip"), .external(name: "ChannelIOSDK"), .external(name: "CocoaLumberjack"), .external(name: "CocoaLumberjackSwift"), .... ]여기에 모듈을 만들 project 를 하..
-
[Error] Perceptible state was accessed but is not being tracked카테고리 없음 2025. 1. 14. 21:49
https://inf.run/V3b51 SwiftUI TCA로 기능을 구현중이다.아직 초보자 수준이라 매시간이 도전이고 고비다.그러던중 이런 에러가 나타났다. 런타임에 발생하며 크래시는 안나지만UI가 심하게 버벅이면서 에러가 자꾸 난다.Perceptible state was accessed but is not being tracked.Track changes to state by wrapping your view in a 'WithPerceptionTracking' view.This must also be done for any escaping, trailing closures, such as 'GeometryReader',`LazyVStack` (and all lazy views), navigation..
-
[Swift] XIB 만 가지고 이벤트 핸들링 하는법, xib cell 내부에 또 cell 이있는경우개발/Swift 2024. 12. 21. 19:23
XIB 만 가지고 버튼 이벤트 핸들링 하는법VC → xib(view) → button 의존 상황button 터치 이벤트를 VC에서 받아야함 근데 xib를 위한 커스텀 class 없는 상황xib와 class 파일을 묶어서 버튼 접근이나 버튼 액션을 처리하지 못하는 상황해결 방법xib 를 위한 class 를 생성하여 이벤트를 받아 처리한다tag를 사용한다.viewWithTag활용하여 이벤트 받아옴if let backgroundView = nib?.instantiate(withOwner: self, options: nil).first as? UIView { if let pastButton = backgroundView.viewWithTag(100) as? UIButton { pastButton.addTarge..
-
[Swift] ReactorKit 사용시 고민할 부분 (비즈니스 로직, Pulse )개발/Swift 2024. 12. 21. 19:16
View 이벤트와 비즈니스 로직 연동 고민다음 페이지 진입을 할지 말지가 비즈니스 로직의 결과값에 의해 결정 되어서 바로 바인딩을 할수가 없는경우 필요한 로직은 다음과 같다.버튼 클릭reactor -> usecase 에서 비즈니스 로직 이후 Bool 리턴 or 에러 리턴에러인경우 에러 노출 , true 인경우 API 호출응답 값 가지고 다음 페이지 진입클릭 바인딩에서 보통 다음 페이지 진입을 하는게 일반적 이지만다음페이지 진입을 할지 말지가 비즈니스 로직의 결과값에 의존하기 때문에 바로 바인딩을 할수가 없다. 따라서 로직 결과값이 State를 변경시키며VC에서는 State 바인딩을 통해 다음 페이지 진입 하는식으로 작업버튼 클릭 -> 로직 수행 (vc -> reactor -> usecase)로직 에러 -..
-
[Error] linker command failed with exit code 1개발/Swift 2024. 11. 24. 19:54
https://inf.run/V3b51 빌드시에 에러 발생Undefined symbols:Linker command failed with exit code 1 (use -v to see invocation) 내용이 이렇게만 나와 있어서 뭐가 문제인지 알수 없음 에러 자세히 보려면 error log 우클릭 → expand all Transcript 을 클릭하면 자세히 내용을 볼수있다. ld: warning: Could not find or use auto-linked library 'swiftXPC': library 'swiftXPC' not foundld: Undefined symbols: __swift_FORCE_LOAD_$_swiftXPC, referenced from: __swift_FO..
-
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/V3b51 iOS Clean Architecture & MVVM: RxSwift 완전 정복 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | Clean Architecture와 MVVM 패턴을 실무에서 적용할 수 있도록 설명하며, RxSwift, Concurrency 등 필수 기술을 다룹니다., iOS Clean Architecture & MVVM: RxSwift 완전 정복현업에서 Cleanwww.inflearn.com Widget 기본 구조import WidgetKitimport SwiftUI@available(iOS 16.1, *)@mainstruct LivaActivityBundle: WidgetBundle { var body: some Widget { LivaA..