728x90

분류 전체보기 290

[CocoaPods] link_stat failed no such file or directory (2) 해결방법

CocoaPods을 사용하는 환경에서 Xcode 빌드 시 link_stat failed no such file or directory (2) 라는 에러가 발생했을 때의 해결방법 공유합니다. (참고로 저는 Xcode 14.3을 사용하고 있고 Alamofire.framework에서 이슈가 발생했어요.) xcworkspace > Pods > Targets Support Files > Pods-xxx > Pods-xxx-frameworks.sh 파일에서 아래 코드를 이렇게 바꿔주세요. (readlink 명령어 뒤에 -f 옵션을 넣어주세요.) 그럼 에러가 바로 해결됩니다ㅎㅎ 다른 해결방법으로는 Xcode를 14.3 -> 14.2로 다운그레이드시키는 방법도 있다고 해요. (저는 안해봐서 진짜 해결되는지는 잘 모르..

TroubleShooting 2023.05.11

Moya timeout 설정하기

안녕하세요. 이번에는 Moya에 timeout 설정하는 방법 공유드리려고 합니다. (Moya 15.0.0를 기준으로 Moya가 제공하는 GitHub API 예시를 활용할게요.) timeout 설정을 해주고 싶으면 MoyaProvider의 requestClosure 인자를 활용하면 됩니다. 아래 코드를 참고해 주세요! 끝! # 참고 - https://github.com/Moya/Moya/tree/15.0.0 GitHub - Moya/Moya: Network abstraction layer written in Swift. Network abstraction layer written in Swift. Contribute to Moya/Moya development by creating an account o..

iOS 2023.05.02

KeychainAccess Array 저장 API 추가하기

안녕하세요. KeychainAccess는 키체인에 쉽게 쓰고 읽는 기능을 제공하는 Wrapper 모듈입니다. KeychainAccess는 키체인에 문자열 또는 Data read/write 기능을 제공해주고 있기 때문에 매우 편리합니다. 근데, Array에 대한 read/write 관련 기능은 안보이더라구요...;; 그래서 문자열 배열을 키체인에 쉽게 read/write 할 수 있는 간단하게 만들어봤습니다. # extension # 사용법 subscript를 사용할 수도 있고 method로 사용할 수도 있습니다. (subscript가 궁금하신 분들은 아래 글을 봐주세요!) subscript 안녕하세요. 이번에는 Swift의 subscript에 대해 알아볼게요. 클래서, 구조체, 열거형에서 subscript..

Swift 2023.04.20

[SwiftUI] iOS 15 이하에서 navigationBarHidden이 동작하지 않는 이슈

안녕하세요. SwiftUI를 사용할 때 iOS 15 이하 환경에서 navigationBarHidden 수식어를 사용해도 NavigationBar가 노출되는 이슈를 발견했고 그에 따른 해결방법을 공유하고자 합니다. # 이슈 아래 상황을 모두 만족할 때 이슈가 발생하는 것 같았어요. 1) iOS 15 이하 일 때 2) 부모 뷰에서 NavigationView를 사용 3) NavigationLink를 사용하여 자식 뷰로 이동 4) 자식 뷰는 TabView를 사용 5) 자식 뷰에서 navigationBarHidden 수식어 사용 이슈가 발생하는 코드도 공유할게요. iOS 16에서 확인해 보면 문제없이 잘 됩니다. 그런데 희한하게 iOS 15에서 실행시키면.... navigationBar가 노출되는 버그(?)가 있..

TroubleShooting 2023.04.11

Moya async API 추가하기

안녕하세요. 요즘 Moya라는 네트워크 통신 모듈을 사용하고 있습니다. Moya는 다 편한데, async-await API가 없어서 직접 만들어봤습니다ㅎㅎ # 추가 Extension 아래 코드만 추가해 주시면 됩니다. # 예시 Moya는 기본적으로 아래처럼 callback 형태로 응답값을 받는데요. 위에서 공유드린 Extension을 추가한다면, async-await 구문을 사용할 수 있게 됩니다. 이번 글은 여기서 마무리.

iOS 2023.04.11

CasePaths 맛보기

안녕하세요. TCA(The Compoasable Architecture)를 보다가 알게 된 CasePaths의 컨셉과 사용법에 대해서 아주 간단하게 알아볼게요. 구조체와 클래스 프로퍼티는 Swift의 KeyPath를 사용할 수 있습니다. 그리고 compile time 때 KeyPath 클래스의 인스턴스로 변경됩니다. 하지만 enum 타입의 경우 KeyPath를 사용 못하죠. 이때 CasePaths는 enum 타입을 KeyPath처럼 사용할 수 있게 해줍니다. KeyPath는 역슬래시를 사용하지만 Casepaths는 그냥 슬래시를 사용해요. KeyPath처럼 값을 설정할 수 있고 값을 얻어올 수도 있어요. (다만, 값을 가져올 경우 case가 일치하지 않는 경우가 있기 때문에 Optional 타입입니다.)..

Swift 2023.04.02

Result Builders

안녕하세요. 이번에는 Swift 5.4에 추가된 Result Builders 타입에 대해 알아볼게요. # resultBuilder 란? resultBuilder는 클래스, 구조체, enum에서 사용할 수 있고, 중첩된 데이터 구조를 만드는데 유용합니다. Int 배열 여러 개를 하나의 Int 배열로 묶는 변수가 있다고 해볼게요. 위 같은 방식이라면 element를 추가할 때마다 + 연산자를 계속해서 넣어줘야 합니다. 이때 resultBuilder를 사용하면 좀 더 깔끔하게 사용할 수 있습니다. (+ 연산자가 필요 없고, 선언형처럼 사용할 수 있어요.) ArrayBuilder라는 구조체를 만들고 @resultBuilder 속성을 적용했을 땐 아래처럼 사용할 수 있습니다. 어떻게 이게 가능한 것일까요? @re..

Swift 2023.04.02

커스텀 LabelStyle

안녕하세요. 요즘 SwiftUI 글이 부쩍 많아진 것 같네요ㅎㅎ 이번엔 커스텀 LabelStyle을 만들고 적용까지 해보는 시간을 가져보려고 합니다. (어렵지 않으니 가볍게 예제 몇 개만 살펴보고 마무리하겠습니다.) Label은 기본적으로 아래처럼 Icon & Title 형태로 화면에 출력됩니다. 여기서 LabelStyle을 잘 활용하면 Icon과 Title 사이의 여백을 더 늘린다던지, Icon과 Title 순서를 바꾼다든지 등 원하는대로 커스텀 할 수 있어요. 몇 가지 예시를 살펴볼게요. 아래 코드는 Title의 색깔만 지정한 색으로 설정할 수 있도록 커스텀 LabelStyle을 정의한 것입니다. LabelStyle 프로토콜을 준수하는 구조체를 정의하고, Label 뷰에 labelStyle 수식어의 ..

SwiftUI 2023.03.28

RoundedCornerStyle

안녕하세요. 이번에는 정말 간단하지만 몰랐었던... RoundedCornerStyle에 대해 빠르게 알아볼게요. 다들 RoundedRectangle은 아시죠? 저는 RoundedRectangle 뷰를 사용할 때 생성자에 cornerRadius(또는 cornerSize)만 인자로 넘기고 있었는데, 지금 보니까 style이란 파라미터도 있더라구요. RoundedRectangle 생성자에 사용되는 style 파라미터는 RoundedCornerStyle이란 enum으로, RoundedRectangle의 모서리 모양을 정의합니다. case는 총 2가지가 있습니다. circular : RoundedRectangle 모서리가 1/4 원 형태 continuous : RoundedRectangle 모서리가 연속된 곡률 ..

SwiftUI 2023.03.26

컨텐츠 영역 높이에 따른 스크롤 가능 여부 설정

안녕하세요. SwiftUI의 ScrollView는 컨텐츠 영역이 화면 영역보다 크든 작든 항상 스크롤이 가능합니다. 만약, 컨텐츠 영역이 화면 영역보다 작은 경우 스크롤이 안되도록 하고 싶으면 어떻게 구현해야 하지?? 라는 생각이 들었고.. 그 방법을 구글링해서 찾았습니다ㅎㅎ... 제가 구현한 것은 아니기 때문에... 이번에는 구글링한 코드를 분석하는 시간을 가져볼까 합니다. (출처와 함께 전체 코드도 함께 첨부하니, 필요하실 경우 참고해 주세요.) # 출처 https://stackoverflow.com/questions/62463142/swiftui-make-scrollview-scrollable-only-if-it-exceeds-the-height-of-the-screen SwiftUI: Make S..

SwiftUI 2023.03.26