분류 전체보기 89

Swift) Continuations 활용

Continuations에는 withCheckedContinuation, withCheckedThrowingContinuation 가 있습니다. 둘 중에 차이는 에러를 return 하는지 안하는지 차이가 있습니다.Continuations는 비동기 코드, Closure형태를 async로 변경할때 많이 사용합니다.단, 주의사항이 있습니다.한번에 continue를 두 번이상 호출하면 안되고, resume을 호출하면 안됩니다. 그렇게 되면 Task가 무기한 일시 중단 상태로 되어버립니다.(앱이 멈추고 결국엔 강제종료가 됩니다.)Closure를 async로 변경하는 예시 코드에러 xClosurefunc requestWeclomeMessage(completion: ((String) -> Void)) { compl..

iOS/Swift 2024.05.20

iOS) XCFramework 생성

배포 목적 Framework 생성 터미널 명령어를 이용해 framework를 생성할 수 있지만, runscript을 이용해 빌드하면 자동으로 Framework가 생기도록 설정해보자. 기능 구현은 생략 후 진행하겠습니다. XCFramework를 생성하기 위해선 아래 순서대로 작업 프로젝트 설정 Run Script 작업 a. TARGETS 추가 b. Run Script 작성 Archive 생성 Frameworok 생성 Build 1. 프로젝트 설정 Build Setting Build Options - Build Libraries for Distribution → Yes Deployment - Skip install → No Architectures - Architectures - 기본 Run Script 작..

iOS/iOS 2024.04.22

SwiftUI) `.fileImporter` 사용시 Error message.

The view service did terminate with error: Error Domain=\_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method} 사용할 떄마다 위에 에러가 나온다. 스택오버 플로우에서는, Xcode에러라고도 하고, 권한 설정하고 사용해야한다고 하고 해결방법이라고 나온 방법들 다 해보았지만, 계속해서 에러 메세지는 나왔다. 결론적으론 에러가 나와도 사용하는데에는 문제가 없다.. https://www.reddit.com/r/swift/comments/11lzg0y/fileimporter_throwing_error/

iOS/SwiftUI 2024.02.14

트러블슈팅) iOS. APNS 등록 후 "didRegisterForRemoteNotificationsWithDeviceToken" 함수 실행 안됨.

문제 APNS 등록 후 didRegisterForRemoteNotificationsWithDeviceToken 호출이 안되는 문제 발생 그로 인해 deviceToken 값을 가져오지 못함 해결 info.plist에 FirebaseAppDelegateProxyEnabled 추가 후 type: "Boolean", value: "NO" 추가 해결과정 FirebaseApp.configure() 실행 시 FIRMessaging으로 인해 APNS가 자동으로 설정되어 함수 호출이 안된 것 같다. 그래서 FirebaseAppDelegateProxyEnabled는 Application delegate이 받은 APNS를 설정하는데 사용된다. 값을 "NO"로 하게 되면 APNS가 수동으로 설정되어 didRegisterFor..

트러블슈팅) iOS. 무결성을 확인할 수 없기 떄문에 이 앱을 설치할 수 없습니다.

문제 iPhone 15에서 기존에 배포되어 있던 앱을 다운로드 시, "무결성을 확인할 수 없기 떄문에 이 앱을 설치할 수 없습니다."라는 문제가 나왔다. Apple 커뮤니티 - iPhone 15, iOS 17에서 무결성 해제 방법 알려주실 수 있을까요? 비슷한 문제를 가지고 계신분들이 있는 것 같다.. 해결과정 구글링을 해보니 앱 버전과, 빌드 버전를 업데이트 해보라는 글이 많아 수정해서 배포하려고 했다. 일단 재 배포하기 위해 ipa파일을 생성 한 후 dropbox에 업로드 했다.(dropbox로 배포하는 방식으로 하는 중이다.) 절차대로 manifast 수정하고 웹 코드도 수정했지만, 다운로드 반응이 없었다.(보통 dropbox 링크 문제인 경우이다.) 이전 공유 링크 url과 비교해보니 url중간에..

SwiftUI `.fullScreenCover` `enum` 활용해 화면 전환

화면 전환을 하는 버튼이 여러개가 있을 떄, 계속 예상치 못한 화면으로 전환되어 정리하는 겸 기록해보자.. 먼저 fullScreenCover에 대해 알아보자. 가능한 한 많은 화면을 표현하는 modal 보기라고 설명되어 있는데, 보여줄 컨텐츠가 연관되어 있는 것이 아닌 새로운 컨텐츠일떄 사용할떄 많이 사용하지 않을까 싶다. 사용법은 간단하다. struct ContentView: View { @State private var isButtonTap = false var body: some View { VStack { Button { isButtonTap.toggle() } label: { Text("화면 전환!") } } .fullScreenCover(isPresented: $isButtonTap) { Te..

iOS/SwiftUI 2023.11.13

SwiftUI TextField

SwiftUI에서 입력가능한 인터페이스 구현시 TextField를 많이 사용합니다. 구현 방법 struct ContentView: View { @State var text = "" var body: some View { VStack { TextField(text: $text) { Text("PlaceHolder") } .padding() } Text(text) .padding() } } TextField에 입력 시 @State로 선언된 text에 업데이트 됩니다. 스타일링 명확하게 입력란을 알려주기 위해 테두리 효과를 적용하겠습니다. struct ContentView: View { @State var text = "" var body: some View { VStack { TextField(text: $..

iOS/SwiftUI 2023.11.10

SwiftUI DisclosureGroup

앱 상에서 특정 화면을 표기하거나 숨기는 기능이 필요로 할 때 DisclosureGroup을 사용합니다. 공식문서에서는 "공개 제어 상태에 따라 다른 콘텐츠 보기를 표시하거나 숨기는 보기입니다." 라고 소개해주고 있습니다. isExpanded의 값에 따라 보여지고, 숨김 상태를 관리할 수 있습니다. 저 같은 경우는 DisclosureGroup View가 눌러졌을 때 바로 보여짐 상태로 전환하고 싶었는데, 아래쪽에 다른 생성자가 있었습니다. 위의 생성자를 사용하게 되면 별다른 Bool타입 관리 없이 Label을 클릭하게 되면 content가 보여짐 상태로 전환됩니다. 사이드 이펙트에 대한 액션이 아닌, 해당 View 클릭 시에만 보여짐 상태를 원한다면, 이 생성자를 사용하는게 개인적으로 좋지 않을까 생각합..

카테고리 없음 2023.11.08