분류 전체보기 87

Realm 채팅 앱 개발 중 메세지 삭제 에러

에러 메세지 삭제 시 RLMException: Object has been deleted or invalidated 에러 메세지가 나오면서 앱이 꺼지는 현상 발생 원인 메세지로그의 변화를 감지하기 위해 Realm의 observe 사용하고 있었다. observe에 짧게 알아 보자면 조금더 자세한 내용은 문서 참조 https://www.mongodb.com/docs/realm/sdk/swift/react-to-changes/ 문서에서 컬렉션 변화에 감지하는 리스너를 등록이라고 설명되어 있다. -> 컬렉션의 데이터 변경이 되면 호출되는 메서드 인 것 같다. 다시 돌아와서 메세지 삭제 시 해당 컬렉션의 데이터를 Realm 호출해 삭제 시키고 있는데 다시 한번더 해당 컬렉션의 데이터를 참조? 값을 찾을려고 하니 ..

음성 녹음, 재생

음성 녹음을 위한 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