전체 글

SwiftUI/Planting-Mind Dev Log

devlog 06. SwiftUI - FileImporter, FileExporter

기록을 jSON 파일로 내보내기 위해 사용한 fileImporter와 fileExporter. 추가로 json확장자를 내가 원하는 확장자로 지정하는 것까지의 기록. fileImporter와 fileExporter SwiftUI에서는 iOS14.0 이상부터 fileImporter, fileExporter 지원 fileImporter: 파일 가져오기 func fileImporter( isPresented: Binding, allowedContentTypes: [UTType], onCompletion: @escaping (Result) -> Void ) -> some View isPresented에 들어갈 Binding 값이 true가 되면 fileImporter가 나타난다. allowedContentType..

SwiftUI/Planting-Mind Dev Log

devlog 05. Scheme '__' is not currently configured for the test action.

잘만 돌아가던 테스트 코드가 위젯 익스텐션을 추가한 이후로 안돌아가고 제목과 같은 얼럿창만 띄웠다...... 해결 방법 지금은 해결하고 난 이후라 Test Plans에 2 test targets, 1 configuration이라고 적혀있지만 원래는 0 test targets였다. -> 버튼을 눌러 이동한 뒤에 좌측 하단의 +를 눌러 테스트를 추가해주었다. 설정 이후에 github action에서 테스트 커버리지가 안나와서 봤더니 Code Coverage 옵션이 꺼져있었다... On으로 바꿔주었다.

SwiftUI/Planting-Mind Dev Log

devlog 04. Localization with String Catalog

Localization을 위해 String 파일을 추가하려고 보니 Strings File이 레거시 파일이 되어버렸다. 그래서 처음 보는 String Catalog 파일을 통해 작업했다. 처음 String Catalog 파일을 추가하면 English가 기본으로 나온다. 다른 언어 파일을 추가하고 싶다면 왼쪽 하단의 + 버튼을 눌러 원하는 언어를 추가할 수 있다. English에 test_key를 하나 추가했다. English에 회색 글씨로 키값이 나오는 걸 보니 값을 넣지 않아 디폴트로 키값이 노출된다는 뜻인 것 같다. English에 key를 하나 추가하니까 Korean 옆에 0%라고 뜬다! Korean에 값을 넣어보자. 헐, 다 채웠다고 초록색 체크마크를 띄워준다... 신기해.... 실제 코드에 Tex..

SwiftUI/Planting-Mind Dev Log

devlog 03. sink에 들어오는 값은 willSet의 값이었다.

SwiftUI로 앱을 개발하면서 하위 뷰에서 상위뷰의 Published 값을 Binding 해서 사용을 해야 하는 일이 생겼다. 하위 뷰에서 값이 바뀌면 상위 뷰에서도 뷰 업데이트가 일어나야해서 Combine의 sink를 사용하게 되었는데, sink 내부에 로직 업데이트 하는 코드를 넣어놨더니 값이 이상하게 바뀌는 것..! 알고보니 sink 내부는 Published 값이 바뀌기 전에 호출이 되는 거였다. swift property로 따져보면 willSet. 내가 만들어놨던 메서드는 Published 값에 바로 접근해서 사용하는 코드라서 함수의 파라메터로 값을 받아서 업데이트 하도록 수정했다. 이렇게 얼렁뚱땅 Combine 제대로 써보기 시작..!

SwiftUI/Planting-Mind Dev Log

devlog 02. github action 세팅하기 (Feat. github action에서 xcresult 확인하는 법)

현재 사용하고 있는 github worksflow 코드 name: Build and Test on: push: branches: [ "develop" ] pull_request: branches: [ "develop" ] jobs: build: name: Build and Test runs-on: macos-14 steps: - uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '15.0.1' - name: Checkout uses: actions/checkout@v3 - name: Build and Test run: | xcodebuild clean -project PlantingMind/PlantingMind.xcodeproj -scheme Plant..

SwiftUI/Planting-Mind Dev Log

devlog 01. SwiftUI에 CoreData 추가

마음심기 프로젝트에서 마음들을 CoreData에 저장하기로 결정했다. 근데 이제 CoreData를 이용한 로직들에 대해 테스트까지 겸한..! (TDD로 짜보겠다고 노력하고 있는데 과연 잘 하고 있는지 모르겠군..) CoreData 사용 file 생성할 때 Data Model 선택한 후 생성 ENTITIES 생성한 뒤 해당 엔티티에 필요한 attribute 추가 final class CoreDataStack: ObservableObject { let persistentContainer: NSPersistentContainer init(_ storageType: StorageType = .persistent) { self.persistentContainer = NSPersistentContainer(name..

eunjuicy
TIL