본문 바로가기

Swift25

[Swift] Realm 파일을 프로젝트 내부에 삽입하는 방법 및 사용하기 (파일 접근 에러) 요약실제 기기에서는 번들에 있는 Realm 파일에 접근할 수 없어서 파일 접근 에러가 발생합니다. 이를 해결하기 위해 앱이 실행 중일 때 Realm 파일을 앱의 documentDirectory로 복사하여 사용하는 방법을 사용할 수 있습니다. 이렇게 하면 파일에 대한 읽기 및 쓰기 권한이 부여되어 Realm 데이터베이스를 사용할 수 있습니다. 문제의 시작운동 기록 앱을 개발할 때, 운동 데이터베이스(DB)를 생성하여 앱에 삽입하여 사용하려고 시도해 보았습니다. Realm 파일을 만들어 프로젝트에 포함시킨 후 Bundle에 넣어 사용하면 되지 않을까 생각하여,Realm 파일을 Bundle에 넣었습니다. Bundle에 있는 파일을 사용하기 위해서는 다음과 같이 진행해야 합니다: App Targets → Bui.. 2023. 10. 1.
[Swift] UITabBarAppearance의 배경색은 어떤 차이가 있을까? UITabBarAppearance TabBar를 코드베이스로 구현하면서 궁금증이 생겼습니다. 탭바의 배경색은 어떻게 설정할 수 있고, 아래 세 가지 메서드의 차이는 무엇일까요? 세 가지 메서드를 비교해보면서 적용해보았지만, 비슷한 것 같으면서도 다른 것 같아서 한 번 분석해보았습니다. iOS 13.0+ configureWithDefaultBackground let appearance = UITabBarAppearance() appearance.backgroundColor = UIColor.systemYellow appearance.configureWithDefaultBackground() tabBar.standardAppearance = appearance print("backgroundColor: ",.. 2023. 9. 3.
[swift] SF Symbol & UIImage.SymbolConfiguration에 대해서 알아보자 UIImage(SystemName:) 지금까지는 간단하게 UIImage(systemName: "person.3.sequence.fill") 와 같은 방식으로 이미지를 만들어 왔지만, 렌더링 색상과 Configuration을 적용할 생각을 하지 않았는데요. 오늘은 시스템 이미지를 커스터마이징하여 사용하는 방법에 대해 살펴보겠습니다. SFSymbols SFSymbols는 애플에서 기본으로 제공하는 시스템 이미지입니다. XCode에서는 UIImage(systemName:)을 사용하여 호출할 수 있습니다. 이미지를 선택할 때 SFSymbols 내에 다양한 렌더링 종류와 종류에 따른 색상이 제공됩니다. 렌더링 색상으로는 단색(Monochrome), 계층(HierarchicalColor), 팔레트(PaletteCo.. 2023. 9. 3.
[Swift] weak 키워드와 Strong Reference Cycle delegate패턴과 메모리 누수이번 글의 내용은 프로토콜을 사용할 때 weak 키워드를 제대로 사용하지 않아메모리 누수가 발생하는 문제를 해결하는 방법에 대한 내용입니다.델리게이트 패턴 사용델리게이트 패턴을 사용하면 뷰컨트롤러에서 뷰에게 동작을 위임할 수 있습니다. 컬렉션뷰를 뷰컨트롤러가 아닌 뷰에 만들고 컨트롤도 위임할 수 있습니다.이를 위해서는 delegate = self와 같이 델리게이트를 설정해줘야 합니다.HomeViewfinal class HomeView: BaseView { // HomeViewController를 델리게이트로 위임 var delegate: HomeViewProtocol? lazy var collectionView: UICollectionView = {...}() ... } .. 2023. 8. 31.
[Swift] 비동기 호출 CallBack지옥과 DispatchGroup 서버에서 가져온 데이터를 화면에 표시 영화 데이터를 서버에서 요청하여 받아오는 작업을 할 때, 한 화면에서 여러 개의 데이터를 요청해야 하는 경우가 있습니다. 예를 들어, 해리포터와 관련된 영화 목록이나 트랜스포머와 관련된 영화 목록과 같은 영화 목록 데이터를 여러 개 받아오는 경우가 있습니다. 서버에서 받아온 데이터를 화면에 보여줄 때, CollectionView나 TableView를 통해 보여주게 됩니다. 이때, 언제 reloadData() 메서드를 호출해 뷰를 갱신시켜줄지에 대해 고민하게 됩니다. 예시 화면과 코드 var movieInfo1: [MovieResult] = [] var movieInfo2: [MovieResult] = [] var movieInfo3: [MovieResult] = [].. 2023. 8. 19.
[Swift] ReactorKit 기본 개념 👉 ReactorKit 개념 ReactorKit은 RxSwift를 기반으로 한 iOS 애플리케이션 아키텍처 패턴 중 하나로, View, ViewModel, Reactor로 구성됩니다. 이 패턴은 모든 사용자 입력과 시스템 입력에 대한 반응을 제공하며, 뷰와 상태 사이의 강력한 연결을 제공합니다. 이 패턴은 또한 깨끗하고 모듈화 된 코드를 작성할 수 있도록합니다. ReactorKit을 사용하는 이유 ReactorKit은 뷰와 뷰모델 사이의 결합도를 줄이고 코드를 모듈화하여 작성할 수 있도록 함으로써 애플리케이션의 구조를 단순화시킵니다. 또한 리액티브 프로그래밍을 사용하므로 코드의 가독성과 유지 보수성이 향상되며, 비즈니스 로직을 명확하게 분리할 수 있습니다. ReactorKit은 뷰모델과 리액터의 분리로 .. 2023. 7. 19.