일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SWIFT
- Tuist
- xcode
- 개발
- iOS 개발자
- SWIFTUI
- navigationsplitview
- iOS 13.0+
- regex
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- combine
- test
- composablearchitecture
- github
- xcodecloud
- ios18
- uikit
- concurrency
- swiftdata
- IOS
- 모바일
- Git
- Navigation
- UI
- ObjC
- 정규표현식
- TCA
- network
- Alamofire
- Firebase
- Today
- Total
목록분류 전체보기 (71)
iOS 개발 기록
Fatal error: This model instance was destroyed by calling ModelContext.reset and is no longer usable. 발생 상황iPadOS18 이상으로 업데이트하니 갑자기 사이드 프로젝트 앱에서 다음과 같은 에러와 함께 강제 종료가 되기 시작했다. iOS17까지는 잘 돌아가던 코드가 18부터 오류가 발생하기 시작한 것.앱은 TCA 아키텍처 구조에서 SwiftData를 사용하고 있었다. 사용하고 있던 방법은 다음과 같다. 1. SwiftData의 데이터를 관리하고 저장소에 접근하기 위한 ModelContainer를 생성HTML 삽입미리보기할 수 없는 소스 2. 동시성 문제 없이 데이터를 관리하기 위해 ModelActor로 데이터를 관..
Composable Architecture(이하 TCA)에서 NavigationSplitView를 통해 화면전환을 주절주절 다루는 포스트입니다. iOS 17.0 이상, TCA 1.9 이상 버전을 기준으로 작성된 코드입니다. iPad나 MacOS에서 흔히 볼수 있는 네비게이션의 방법 중에, 측면에 네비게이션을 위한 분할 뷰를 열로 생성하는 위와 같은 형태가 있다. 이를 쉽게 구현할 수 있도록 SwiftUI에서 NavigationSplitView라는 API를 지원한다. NavigationSplitView는 iOS 16.0 이상부터 사용할 수 있다. 그래서 설정 앱을 기준으로 section으로 구분되는 sidebar를 가진 간단한 NavigationSplitView 화면을 구현해보았다. Tree-b..
정규표현식이란?특정 패턴언어 가지는 문자열의 집합을 표현하는데 사용되는 형식 언어.핸드폰번호, 이메일 등 패턴을 가진 문자열의 유효성 검증할때 핵꿀. 정규표현식 문법메타문자사실 메타문자는 봐도봐도 까먹는다... 또 까먹을것 같지만 한번 정리는 해두자 메타문자를 정규문자로 사용하고 싶으면 \를 통해 사용할 수 있다.메타문자기능예시설명.문자 일치...123 ( = abc123, def123 등)개행문자를 제외한 문자 1개와 일치+1개 이상\w+ ( = Hello 등), \d+ (= 010 등), \d+\s\d(= 010 0000등) 1개 이상의 문자 포함\w \d \s영문자, 숫자, 공백[A-Za-z0-9], [0-9], 공백문자를 의미 \W \D \S영문자, 숫자, 공백이 아님 \D+\s\D+ (= 나는..
TCA에서 사용되는 SharedState에 대한 내용입니다. 여기서는 SharedState이 무엇인지 소개하는 내용 보다도 사용하면서 조금은 편하게 쓰고자 애쓴 흔적들을 주절주절 적습니다. SharedState어느날 갑자기 TCA 제작사인 Point-Free 에서 메일이 겁나 날라왔다. TCA 새로운 에피소드, 바로 Sharing State입니다~~~ 하는 내용이었다. 예전에 Github에서 SharedState에 대한 논의가 활발히 다뤄지는 것만 봤었다. 느낌상 큰 업데이트일것 같아서 Shared-State-beta 브랜치에서 개발되고 있는 코드를 사이드 프로젝트에 미리 적용봤었었다.SharedState는 ChildFeature로 상태를 굳이 하나하나 전달하지 않아도 되는, 왕편리함 그 자체..
사이드 프로젝트에 Xcode Cloud를 적용해보면서 겪은 과정을 정리한 글입니다. Xcode Cloud에 대한 소개와 사용법 보다는 Tuist로 관리되는 프로젝트를 Xcode Cloud 환경에 맞게 설정한 내용을 기록하기 위해 적었습니다. Xcode CloudTuist로 관리하는 프로젝트를 실행할 때에 tuist install, tuist generate와 같은 명령어가 필요하다. Tuist를 통해 관리하는 프로젝트는 Xcode Cloud를 어떻게 적용시킬까? 다행히 Xcode Cloud에서는 빌드 스크립트를 작성해서 필요한 설정을 구성할 수 있다. post-clone 타이밍에 Tuist의 설치와 실행 명령어를 스크립트로 작성하면 될 것 같다. Xcode Cloud의 Custom Build Scr..
업데이트 계기 원래 사용하던 Tuist의 버전은 3.x버전이었다. 4.x대로 업데이트 할 생각은 없었다. 개인적으로 혼자 사이드 프로젝트로 진행하던 아이패드용 앱이 있는데, SwiftUI + Composable Architecture(이하 TCA)를 사용하며 Tuist로 관리하는 프로젝트였다. TCA의 빠른 업데이트 속도를 따라가는것도 벅차서 Tuist 까지 업데이트를 따라가기엔 부담이 있었기 때문이었다. 그러던 어느날, 이런 에러가 출력되었다. 해당 에러는 Xcode 15.3으로 업데이트 되면서 올라가면서 Xcodebuild의 버전도 같이 올라가면서 생긴 문제인것 같다. Xcodebuild의 버전을 15.2으로 사용하니 원래대로 빌드가 되었다. 이왕이면 업데이트 된 Xcode 15.3버전에서 작업을 하..
📄목차파일 구조Header파일(.h)과 Implementaion파일(.m) import 클래스 구조Class와 Category @interface,@implementation / @end메서드의 선언함수의 호출Reference Objective-C는 객체지향 프로그래밍을 목적으로 C언어의 확장 형태로 개발되었다. C나 C++과 호환됨녀서 다른 문법을 추가로 지원한다. 파일 구조Header파일(.h)과 Implementaion파일(.m) .swift파일 하나만 있는 Swift와는 달리 Objective-C는 선언파일(.h)과 구현파일(.m)로 나뉘어진다. /// NSString+Size.h #import @interface NSString (Size) - (CGSize)stringSize:(NSIntege..
📄목차상황 해당 메서드 코드XCTestExpectationTask fulfillment사용Reference 상황 AsyncSequence를 사용한 Concurrency 메서드를 테스트하는데 테스트가 종료되지 않는 상황이 발생했다. 로그도 뜨지 않고 왜 이런 상황이 발생하는 건지 파악도 잘 안됐다. 아마 테스트를 실행하는 스레드와 비동기 작업을 수행하는 스레드가 작업을 끝냈다는 것을 서로 전달하지 않아 데드락이 걸린게 아닐까 싶었다. 찾아보니 XCTestExpectation를 사용해서 비동기 메서드를 테스트할 때에 사용하는 코드가 있길래 이걸 조금 수정해서 사용하니 다행히 잘 돌아갔다. 해당 메서드 코드import XCTest extension XCTestCase { /// Test Concurrency ..
📄목차preferredMaxLayoutWidthIntrinsicContentSizeinvalidateIntrinsicContentSize()PriorityContent Hugging Priority Content Compression Resistance PriorityReference preferredMaxLayoutWidth여러 줄의 UILabel에 적용될 수 있는 프로퍼티. UILabel의 최대 너비를 설정한다. 최대 너비를 넘어가는 경우 UILabel은 새로운 줄로 개행하며 높이를 증가시킨다. preferredMaxLayoutWidth를 설정해서 일정한 텍스트 레이아웃을 정렬하거나 적절한 레이아웃을 유지할 수 있다. Storyboard에서는 Desired Width에서 설정할 수 있다 . 이미지에서..
📄목차준비 → 카메라 및 앨범ViewModel VNImageRequestHandlerVNRecognizeTextRequestrequest 실행ViewImage PickerOCRViewCameraView 결과 Reference iOS 11부터 애플이 지원하는 Vision 이라는 프레임워크가 있다. 머신러닝 기능을 활용하여 이미지나 비디오, 얼굴이나 바코드, 텍스트 등을 인식하여 다양한 작업을 수행할 수 있도록 하는 프레임워크다.애플에서 이용해 직접 지원하다보니 빠르고 효율적이며, 무료이다…! 이를 활용하여 이미지에서 텍스트를 인식하는 OCR 기능을 사용할 수 있는데, iOS 16.0부터 드디어 지원 언어에 한국어도 포함이 되었다. 이를 통해 간단하게 이미지로부터 한국어 텍스트를 인식하는 기능을 만들어 보려..