Combine Remind (Fin)
Http Client 이 코드를 가지고 UIKit, SwiftUI에 적용을 한다. import Combine enum NetworkError: Error { case badUrl } class HTTPClient { func fetchMovies(search: String) -> AnyPublisher<[Mov...
Http Client 이 코드를 가지고 UIKit, SwiftUI에 적용을 한다. import Combine enum NetworkError: Error { case badUrl } class HTTPClient { func fetchMovies(search: String) -> AnyPublisher<[Mov...
CustomSubject Subject하면 우리는 PassthroughSubject와 CurrentValueSubject 이렇게 2개를 알고 있는데, Subject를 Customizing 할 수 있다. 짝수에 관한 CustomSubject를 만들어본다. class CustomSubject<Failure: Error>: Subject...
Combine을 UIKit에서만 사용해봤었는데, SwiftUI에서도 적용을 해보려한다. 그전에 Combine 사용한지 오래 되었기에, Udemy 강의를 가볍게 정리를 하면서 Remind를 하려고한다. 이전에 서술한 내용이 있는 부분은 패스를 할 예정. 이전글은 여기에. Reactive Programming? Reactive Programmin...
iOS 18 적용 Swift6 Concurrency 지금 Xcode에서 사용하는 Swift Version은 5이지만, Swift6가 최근 발표가 되었기에 사용을 해본다. Swift 버전설정은 위의 사진을 참고! 문제 버전을 바꾸자 에러가 발생 해당 코드만 보면 // Background thread async let steps = h...
Code Comments DocC를 활용하여 우리가 만든 프로젝트에 우리가 Docs를 만드는 과정을 진행한다. Cmd + Option + / 를 사용하면 이렇게 함수에 대해 설명을 할 수 있는 주석이 생성이 된다. 사용 예시: 리턴함수 아래와 같이 fetchStepCount 함수에 대해 작성을 해보았다. 이때 Description을 작성...
Accessibility(손쉬운사용) 사용하기 VoiceOver Tutorial Accessibility & Inclusion Design an effective chart New iOS18 feature VoiceOver rotor 참고 링크를 한번 확인해보자/ ChartContainer var titleView: some Vi...
Optimizing 1. sheet to fullScreenCover 이부분은 예전글에 여러 수강생의 의견이라는 섹션으로 작성을 했던 부분이다. 그래서 크게 언급은 하지 않는걸로 하겠다. fullScreenCover를 사용한다면 primingView에서 .interactiveDismissDisabled() 이부분은 지워주자. 2. DataLi...
코드 리팩토링 이어서 진행을 하도록 한다. ChartContainer config 객체 도입 struct ChartContainer<Content: View>: View { let title: String let symbol: String let subtitle: String let context: Heal...
코드 리팩토링 여태까지 만든 코드를 리팩토링을 하는 과정을 해보려한다. refactoring은 소프트웨어 공학에서 ‘결과의 변경 없이 코드의 구조를 재조정함’을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다. 사용자가 보는 외부 화면은 그대로 두면서 내부 논리나 구조를 바꾸고 개선...
Chart Drag시 Haptic 기능 추가. 차트를 드래그할때 Haptic 기능을 제공하여 기기와 접촉할 때 촉감을 자극해 실제로 뭔가를 만지고 있다는 느낌을 전달하려 한다. sensoryFeedback Modifier를 사용한다. Step Chart View에서 적용을 해보자. @State private var selectedDay: Dat...