전체 글
-
[맵모] 출시회고1 (240321)회고 2024. 3. 21. 14:46
맵모를 앱 스토어에 출시했습니다! 약 2주 동안 구현을 한 맵모를 출시 하고 나서가장 고민이 되었던 부분은 맵모 수정 시 선택된 장소의 조건에 따라 Realm에 수정하는 부분이였습니다. Realm에 저장되는 Place 모델은 List 타입으로 records를 가지고 있다.그렇기 때문에 맵모 수정 시 선택된 장소가 이전 장소와 다를 경우, 1. Realm에 저장된 이전 장소의 records에서 수정하고자 하는 record를 제거2. 변경된 장소에 record를 append3. record의 modifiedAt을 현재 시간으로 수정과 같은 여러 번의 쓰기 트랜잭션이 발생한다. 많은 realm 트랜잭션을 동기적으로 수행할 경우, UI 반응성이 심각하게 저하될 가능성이 있다는 것을 알게되었습니다. writeA..
-
[맵모] 중간 회고6 (240320)회고 2024. 3. 20. 21:08
# 😟 경험한 이슈 수정 기능에서 기록에 등록된 장소를 변경하는 작업을 구현하고 있었다. 먼저 구현 로직을 정리하고, 로직대로 구현하였다. 1. 기존에 등록되어 있던 records List에서 수정하려는 record를 삭제한다. 2. 새로운 장소의 records에 record를 추가한다. 하지만 이 로직에는 흠이 있었다. 기존에 등록되어있던 records에서 record가 삭제되지만, 만약 삭제 후 records의 개수가 0개라면, Realm에 그대로 남아있게 되고, 불필요한 데이터가 계속해서 쌓이는 문제가 발생하기 때문이다. 따라서 write transaction의 바깥에서 Realm 데이터를 변경하려고 한다. write transaction 안에서만 수정이 가능한데, 지금 write transacti..
-
[맵모] 중간회고5 (240319)회고 2024. 3. 19. 03:22
# 📖 오늘 학습한 내용scrollView + pageControl을 사용하여 이미지 스크롤하기메모 상세 화면에서 등록된 이미지들을 페이지 형식으로 보여주고 싶은 상황이다. let imageScrollView = UIScrollView()let pageControl = UIPageControl()imageScrollView.isPagingEnabled = trueimageScrollView.isScrollEnabled = trueimageScrollView.backgroundColor = ColorStyle.customWhiteimageScrollView.showsVerticalScrollIndicator = falseimageScrollView.showsHorizontalScrollIndicator ..
-
[맵모] 중간회고4 (240318)회고 2024. 3. 18. 21:30
# 📖 오늘 학습한 내용선택된 날짜에 해당하는 기록들을 조회하고자 캘린더를 사용하기 위해FSCalendar를 학습하였다. let calendar = FSCalendar()// 요일을 나타내는 Weekday의 언어 설정calendar.locale = Locale(identifier: "ko_KR") calendar.appearance.weekdayTextColor = ColorStyle.customBlackcalendar.appearance.titleFont = .pretendard(size: 15, weight: .regular)calendar.appearance.eventSelectionColor = ColorStyle.mapmoColor// 헤더 설정calendar.appearance...
-
[iOS] Moya를 사용한 NetworkingiOS 2024. 3. 17. 21:42
안녕하세요 코냥입니다:) 오늘 알아볼 것은 Moya라는 라이브러리 입니다! 제목에서 알 수 있듯이 Moya를 사용해서 네트워킹을 할 수 있습니다. 그렇다면 우리는 URLSession이나 Alamofire가 있는데 Moya는 뭐가 다르냐! 라고 궁금해하실 수 있는데욧!!.! iOS에서 네트워킹을 할 때 기본적으로 쓰이는 게 URLSession입니다. 하지만 이 URLSession을 추상화하여 더 간편하게 사용할 수 있도록 한 라이브러리인 Alamofire를 많이들 사용합니다. 여기서 Alamofire를 한번 더 추상화하여 구현된 라이브러리가 바로 Moya입니다! 기존 구조에서 존재하는 문제점은 크게 3가지입니다. 어디서 부터 시작할지 시작이 어렵다. 유지보수가 어렵다. 유닛 테스트 작성를 작성하기 어렵다...
-
[SwiftUI] @State, @Binding, @ObservedObject, @EnvironmentObjectSwiftUI 2024. 3. 17. 21:40
안녕하세요 코냥입니다! 이번 포스팅에서는 SwiftUI에서 데이터를 어떻게 보여주는지(데이터 바인딩)를 처리하는 핵심 요소를 알아보겠습니다. @State State | Apple Developer Documentation A property wrapper type that can read and write a value managed by SwiftUI. developer.apple.com 먼저 @State의 예제를 보겠습니다. struct ContentView: View { @State var text: String = "" var body: some View { VStack(alignment: .leading, spacing: 10) { //$가 붙으면 값을 수정가능한 Binding타입 참조합니다. ..
-
[Swift] 열거형(enumeration) (2/2) 열거형 배열로 사용, 열거형 항목 비교Swift 2024. 3. 17. 21:33
이번 포스팅에서는 열거형에서 연관 값과, 항목 순회(CaseIterable), 순환 열거형, 비교 가능한 열거형(Comparable)을 알아보도록 하겠습니다. 열거형에 처음 들어보신다면 밑에 포스팅을 읽어보고 오시면 됩니다! [Swift] 열거형(enumeration) (1/2) 열거형이란? 연관된 항목들을 묶어서 표현할 수 있는 타입 배열, 딕셔너리 같은 타입과는 다르게 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가능합니다. 그렇다면 열거형은 어떤 경 baboyuj.tistory.com 1. Associated Values(연관 값) 연관 값은 열거형 각 항목이 가지는 자신과 연관된 값을 말합니다. 말 그대로 항목과 관련된 값입니다. 연관 값은 각 항목 옆에 소괄호로 묶어 표현할 수 있습니다...
-
[Swift] 열거형(enumeration) (1/2)카테고리 없음 2024. 3. 17. 21:30
열거형이란? 연관된 항목들을 묶어서 표현할 수 있는 타입 배열, 딕셔너리 같은 타입과는 다르게 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가능합니다. 그렇다면 열거형은 어떤 경우에 사용하면 좋을까요? 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 enum Direction { case north case east case west case south } 스위프트의 열거형은 enum이라는 키워드로 선언할 수 있습니다. enum Direction { case north, east, west, south } 이렇게 case 하나에 , 를 연결하여 한 줄로 표현해줄 수 있습니다. var direction: Direction = .north ..