iOS 52

음성 녹음, 재생

음성 녹음을 위한 AVAudioPlayerDelegate 음성 재생을 위한 AVAudioRecorderDelegate class AudioRecorderManager: NSObject, ObservableObject, AVAudioPlayerDelegate, AVAudioRecorderDelegate { // 음성메모 녹음 var audioRecorder: AVAudioRecorder = AVAudioRecorder() @Published var isRecording = false // 음성메모 재생 var audioPlayer: AVAudioPlayer? @Published var isPlaying = false @Published var isPaused = false // 음성데이터 @Publishe..

iOS/iOS 2023.09.04

Error: "Swinject: Resolution failed. Expected registration"

Swinject: Resolution failed. Expected registration: { Service: RecentMessageListenerRepositoryProtocol, Factory: Resolver -> RecentMessageListenerRepositoryProtocol } Available registrations:-> 주어진 로그 메시지를 보면, Swinject가 RecentMessageListenerRepositoryProtocol에 대한 등록을 찾지 못해 해결할 수 없다는 것을 나타냅니다. 컨테이너에 등록된 의존성을 해결하지 못했을 때 발생합니다. 이런 경우, Swinject 컨테이너에 필요한 의존성 등록을 추가하거나 문제가 있는 의존성을 수정하여 해결할 수 있습니다. 현재..

iOS) UIVisualEffectBackdropView 제거

CustomAlert 작업 시 Background에 희미한 색상이 있어 View 디버깅을 해보니 UIVisualEffectBackdropView 타입의 View가 있었다.. 시뮬레이터 디버깅 해당 View 타입을 제거하는 코드는 self.view.subviews.first?.isHidden = true 추가로 색깔을 변경하고 싶을 때에는 self.view.subviews.first?.backgroundColor = .blue 로 변경할 수 있다. 참고 자료.. https://stackoverflow.com/questions/37293656/change-uialertcontroller-background-color

iOS/iOS 2023.07.17

What's New in Swift (2020)

Swift 5에 API 안정성이 도입되면서 Swift에 Binary Framework가 도입되었습니다. 이로 인해서 SwiftUI 같은 강력한 API가 등장했습니다. 또한 Swift Package Manager를 사용하여 접근할 수 있는 오픈 소스 API가 증가 되었고 도메인 문제를 해결하기 위한 Cross-Platform으로써 성장할 수 있습니다. 1. 런타임 성능 발전에 대해서 Swift 4이후 버전, vs Objective-C 버전 Swift 4.1은 코드 크기 최적화로 많은 부분을 제거할 수 있었는데 Swift 5.3에서는 Objective-C 버전 코드 크기의 1.5배 이하로 줄였습니다. SwiftUI에서는 앱의 코드 크기가 개선되었습니다. 2. Dirty 메모리 사용한 개선에 대해서 Binar..

iOS/WWDC 2023.06.30

Realm) Error - "Provided schema version 0 is less than last set version 1." 해결

발생 새로 앱을 실행시키거나 모델 업데이트 시 Realm version 에러가 발생했다. 이유 에러 발생 이유로는 schema version 설정 전에 Object에 접근해서 빌드 시 에러가 발생되었다. 해결 앱 실행 후 처음 접근 전에 Realm을 configuration을 하면 해결 되었다. 저는 RealmDB객체를 init에서 선언해주어 생성과 동시에 configuratuion 해주었다. let config = Realm.Configuration( schemaVersion: 1, migrationBlock: { migration, oldSchemaVersion in if (oldSchemaVersion < 1) { } }) Realm.Configuration.defaultConfiguration =..

SwiftUI) NavigationBar 뒤로가기 버튼 안보이게 하기

네비게이션링크로 이동 시 자동으로 이전 화면의 이름이나 "Back"버튼이 나온다. 아래 화면 처럼 적당한 이름이면 이러한 동작이 좋을 수도 있지만, 만약 Navigation Title이 길거나, 알아보기 힘들다면? 오히려 깔끔하지 않을 수 있다. 안보이게 하는 방법으로는 .toolbarRole(.editor) 로 Navigaion Title의 범위를 크게 지정해주어서 안나오게 만들 수 있다.

iOS/SwiftUI 2023.06.12

SwiftUI) List NavigationLink item ">" 숨기는 방법

StackOverFlow에서 찾은 방법.. -> 하지만 기본적으로 List 생성 시 ">" 아이콘이 나온다. 해결방법 ZStack을 사용해서 위에 뷰를 덮어씌어주는 느낌으로 해결 기존의 NavigationLink Label은 보이지 않도록 opacity(0.0)으로 설정 struct ContentView: View { var test = [1, 2, 3, 4, 5, 6] var body: some View { NavigationView { List(test, id: \.self.description, rowContent: { element in ZStack(alignment: .leading) { Text("\(element)") NavigationLink { Text("\(element)") } lab..

iOS/SwiftUI 2023.05.31

WWDC16) Understanding Swift Performance - 2

프로토콜 유형과 제네릭 코드 구현을 탐색 프로토콜 유형 변수가 저장되고 복사되며 메소드 디스패치가 작동하는 방식을 알아 볼 겁니다. 여기 Drawable 추상 기본 클래스 대신, draw 메소드를 선언하는 protocol drawable이 있습니다. 또한 값 타입인 구조체 Point와 Line이 프로토콜을 준수하고 있습니다. 이제 값타입도 다형성을 가지게 되었습니다. 우리는 drawable프로토콜 타입의 배열에 Point와 Line 타입의 값을 모두 저장할 수 잇습니다. 그러나 이전과 비교했을 때, 다른 점이 있습니다. 참고로 값 유형 구조체인 Line과 point구조체는 Kyle이 방금 보여준 V-Table 디스패치를 수행하는데 필요한 공통 상속 관계를 공유하지 않습니다. 그렇다면 이 메서드에 대한 디..

iOS/WWDC 2023.05.02