개요
SwiftUI에서 개발을 하다보면 당연히 에러가 발생할 수 있다.
해결 방법을 알아보자
시뮬레이터는 되는데 핸드폰에서 빌드 오류
Communication with Apple failed. your maximum App ID limit has been reached.
No profiles for 'kyujin.FruitMart' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'kyujin.FruitMart'.
이 두개의 오류가 발생하며 시뮬레이터는 작동되지만 내 핸드폰에서 실행하면 안되는 경우가 있다.
해결방법
무료계정은 앱을 10개까지만 만들 수 있다. 최근에 개념 공부하느라 많이 만들었더니 안된다.
핸드폰에 빌드를 안하고 그냥 맥북에서만 했는데도 앱 한개로 치나보다.
- xcode 설정에서 다른 애플계정 추가
- 프로젝트 설정/Signing & Capabilities에서 Team을 새로운 애플계정으로 설정
environmentObject를 사용했을 때 프리뷰 오류
위 사진처럼 예기치 않은 오류라면서 종료될 때가 있다.
해결방법
만약 EnvironmentObject를 썼다면 프리뷰에도 환경객체 수식어를 붙여주면된다.
- .environmentObject(환경객체)
Contextual type for closure argument list expects 1 argument, which cannot be implicitly ignored
GeometryReader안에서 Geometry 클로저의 매개변수를 안만들어주면 나는듯 또는 $0도 없거나
해결방법
- 클로저 매개변수가 필요 없다면
_ in
을 넣는다. - 클로저 매개변수가 필요하다면
arguement in
을 넣는다 - 클로저 매개변수를 생략하고 싶다면
$0
을 사용한다.
.accentColor()사용 불가
메인문에 수식어로 네비게이션 바의 뒤로가기버튼을 바꿀수 있는데 없어졌음
해결방법
- 클로저 매개변수가 필요 없다면
_ in
을 넣는다. - 클로저 매개변수가 필요하다면
arguement in
을 넣는다 - 클로저 매개변수를 생략하고 싶다면
$0
을 사용한다.
변수를 클로저로 구현했을 때 클로저 내용이 사용되지 않는다고 할 때
클로저로 변수를 선언할 때 에러는 아니고 경고가 뜬다.
해결방법
- 해당 변수가 했으면 하는 작업에 return 키워드를 붙여야한다.
Cannot use instance member ‘viewModel’ within property initializer; property initializers run before ‘self’ is available
인스턴스가 만들어지기 전에 그 변수를 사용할 수 없다는 것이다.
c스타일로 코드를 짜면 당연히 돼야하는데 스위프트에서는 안된다.
1 |
|
해결방법
- static을 붙여서 타입프로퍼티로 만든다.
- 클로저로 초기화한다.
1 |
|
OR
1 |
|
외부 sdk import했는데 안될 때
Firebase sdk를 설치 했는데 왜 안되지??
특정 라이브러리 import하면 쓸수 있는 기능도 안된다 그런다. Xcode 버그 같다.
해결방법
Workspace에 Package Dependency에 reset caches를 누르면 된다.