개발 with Apple
[오류] SwiftData - Accessing Environment<ModelContext>'s value outside of being installed on a View. This will always read the default value and will not update. & View outside에 위치한 @Query를 사용하여 데이터 불러오기 실패
1. 내용 캡쳐- 프로젝트를 진행하면서 SwiftData를 사용하게 되었는데, 삽입된 데이터 값들을 여러 뷰에서 사용해야 했고 각각의 뷰에서 @Query를 실행해서 데이터를 불러오는 것이 아닌, 데이터를 관리하는 하나의 싱글톤 객체가 있으면 어떨까?라고 생각해보았다. ObservableObject로 선언된 Class를 생성하고 클래스 내부에서 @Query를 사용해서 SwiftData에 저장된 데이터를 가져오고, @Published로 선언된 객체를 사용해서 데이터를 관리하고자 하였다. 하지만 @Query를 사용해서 데이터를 불러온 결과값이 들어오지 않는다는 것을 알게 되었다. 2. 원인 분석- 불가능한 이유를 알아보고자 찾아봤지만, 같은 방식을 사용하거나 공식 문서에서 명확한 답을 얻을 수 없어 Apple..
[오류] Local Authentication 보라색 오류 발생 - Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates.
1. 내용 캡쳐 - 로그인 이전 View를 로그인 성공 여부에 따라서 메인 뷰로 Route해주기 위해서 @Published를 사용하였습니다. 로그인 방식은 Local Authentication을 사용하는 방식을 채택하였으며, 인증을 수행 후 성공 시 아래 코드 27줄에서 볼 수 있듯, @Published된 변수 값 변경을 통한 뷰의 전환을 수행하도록 하였으나 보라돌이 에러를 마주치고 말았다. Xcode에서 잘 만나기 힘들지만 중요한 순간에 한번씩 만나게 되는 보라색 에러는 주로 메모리 관련된 오류이며, 당장에 문제가 없을 지라도, 충돌 시 앱이 동작하지 않을 수 있는 중요한 에러 중 하나이다. 2. 원인 분석 - Publishing changes from background threads is not ..
[오류] Alert 다중 사용 시 1개만 실행되고 나머지는 실행 안됨
1. 내용 캡쳐 - 기존에 생각한 방식은 텍스트를 입력할 수 있는 Alert가 먼저 나오고, 텍스트 입력 후 '완료' 버튼을 누르면 해당 값이 기존에 생성된 Tag값과 같은지 확인하여 같은 경우 이름 중복에 대한 Alert가 뜨는 프로세스를 생각하였다. 따라서 아래와 같이 태그 생성 버튼에 텍스트 입력이 가능한 Alert를 생성해주었고, Alert 내부의 '완료' 버튼 클릭 시 태그 중복 여부 체크 후 Alert를 생성해주었습니다. 하지만 첫번째 텍스트 입력 Alert만 실행되고, 두번째 Alert가 실행되지 않았습니다. 2. 원인 분석 https://yyomzzi.tistory.com/m/8 [Issue 해결] SwiftUI에서 하나의 뷰에 여러 개의 Alert 나타내기 오느른..~ swiftUI로 앱..
[오류] MacOS 업그레이드 후 개발자도구 xcrun: error: invalid active developer path
1. 내용 캡쳐 - visual studio에서 python3를 실행하였으나, 겉보기에 작동 하는 것 처럼 보이지만 결과값이 나오지 않았다.(프린트조차 되지 않았음) 뭔가 문제가 있다는 것을 직감하고 터미널에 python3를 입력하였으나 xcrun: error: invalid active developer path가 발생했다. 2. 원인 분석 - 이 직전 Xcode 오류를 해결하기 위해서 연쇄적으로 진행했던 MacOS 업그레이드 후 python3 실행 시 경로 문제가 발생했다. Mac 업그레이드 후 맥북이 CommandLineTools을 식별하지 못해서 발생한 문제라고 한다. 3. 결과 - 아래 링크를 참고하여 MacOS 업그레이드 시 발생하는 문제라는 것을 알게 되었고, 아래 명령어를 통해서 Comma..
[오류] Xcode - The run destination is not valid for running the scheme
1. 내용 캡쳐 - 아래 내용을 읽어보면 최신 버전으로 업데이트를 하라고 되어 있다. 2. 원인 분석 - 최근 iOS를 17.1로 OS 업데이트를 진행하였고, Xcode는 iOS 16까지만 지원하는 버전이였다. 당연히 17 버전의 OS를 지원할 수 있는 프로그램이 없으니 업데이트를 하라고 한 것 뿐이다! 3. 결과 Xcode 업데이트를 하려고 했더니 Mac OS 업데이트를 하라고 해서 결과적으로 iOS, Mac OS, Xcode 모두 업데이트를 진행하였다. 아주 문제 없이 정상적으로 잘 돌아간다. 4. 참고 Xcode 수동 다운로드 파일 : https://xcodereleases.com/ Xcode Releases More than you ever wanted to know™ xcodereleases.com
[공부] 인프런 UIKit 강의 - 6가지 Passing Data 방식
기존에 Swift로 만들고자 기획했던 앱을 한번도 시도해보지 않았던 UIKit 프로젝트로 구현해보기 위해서 우선 UIkit에 대한 이해를 하고자 인프런 강의를 신청하였다. 청년수당을 통해 지급되는 지원금으로 강의를 수강할 수 있음에 감사한다. [Passing Data] 1. Instance Property - 가장 간단하게 이해할 수 있는게 해당되는 뷰컨트롤러나 클래스에 데이터를 접근해서 데이터를 넘겨주는 것은 대상의 클래스가 가지고 있는 인스턴스 프로퍼티에 데이터를 넘겨주는 것이다. class ViewController : UIViewContorller { var Data : String? // 이것을 인스턴프 프로퍼티라고 부른다. } /* 일반적으로 var, let을 변수, 상수라고 부르지만 clas..
[공부] Swift 타입 정리(기본타입: 구조체,클래스,열거형 | 원시타입: 숫자타입, 불린타입, 텍스트타입, 컬렉션 타입)
[참고] https://roniruny.tistory.com/136 [Swift] 클래스(Class) /구조체(Struct) /열거형(Enum) 정리 + 차이점 📚 목차 1️⃣ 열거형 Enum 2️⃣ 구조체 Struct 3️⃣ 클래스 Class 4️⃣ 차이점 Swift는 객체지향 프로그래밍 언어입니다. 그렇기 때문에 우리는 클래스, 구조체, 열거 roniruny.tistory.com 1. Swift는 객체지향 프로그래밍 언어이다. - 객체를 생성하는 기본 형식은 1.클래스 2.구조체, 3.열거형이 있다. 각각의 타입을 가지는 객체(!=인스턴스)를 생성해서 사용을 하게 되는 것이다. - 각각의 타입을 기반으로 특정 객체를 만들고 사용하기 위해서는 '초기화(이니셜라이저)'를 해야..