10/05
- [x] Realm 스키마 구현
- [x] Realm 서비스 구현
- [x] 즐겨찾기 → Realm Write 구현
10/06
- [x] MapView 현재 지도에서 가게 재검색 기능 구현
- [x] MapView 상세에서 TabBar 위에 버튼 View 올리는 작업 해결
hidesBottomBarWhenPushed = true
hidesBottomBarWhenPushed
속성을 통해 TabBar를 hide시키고 그 위에 뷰를 얹었다.
- [x] 평점뷰 구현
private var starNumber: Int = 5 {
didSet { bind() }
}
var currentStar: Int = 0 {
didSet {
updateStars()
currentStarSubject.onNext(currentStar)
}
}
private func buttonTapped(tag: Int) {
if tag == currentStar - 1 {
for index in 0..<starNumber {
buttons[index].setImage(ImageLiteral.starIcon, for: .normal)
}
currentStar = 0
return
}
for index in 0...tag {
buttons[index].setImage(ImageLiteral.fillStarIcon, for: .normal)
}
for index in tag + 1..<starNumber {
buttons[index].setImage(ImageLiteral.starIcon, for: .normal)
}
currentStar = tag + 1
}
- 평점 버튼 탭 시 currentStar를 계산하여 Subject로 onNext 시켜줬다.
10/07
- [x] 즐겨찾기 시 Realm Write 고도화
- [x] 평점 Realm Write 고도화
- [x] 맵 상세 CRUD TestCase
func handleBookmark(_ store: StoreVO) {
if store.bookmark && !storeExists(store.id) {
createBookmark(store)
} else if !store.bookmark && storeExists(store.id) {
if store.rate > 0 || !store.episode.isEmpty {
updateStoreBookmark(store)
} else {
deleteStoreBookmark(store)
}
}
}
func handleLocalStore(_ store: StoreVO) {
if !storeExists(store.id) && hasRatingOrEpisode(store) {
// Realm에 존재하지 않으면서, 평점 또는 에피소드 중 하나라도 존재하는 경우
createBookmark(store)
} else if storeExists(store.id) {
// Realm에 존재하는 경우
if hasRatingOrEpisode(store) {
// 평점 또는 에피소드 중 하나라도 존재하는 경우
if shouldUpdateStore(store) {
// 변경된 사항이 존재할 경우
updateStoreBookmark(store)
}
} else {
// Realm에 존재하는데, 평점, 에피소드 모두 값이 없는 경우
deleteStoreBookmark(store)
}
}
}
- 기존에는 북마크를 기준으로 나누었다면, 변경된 기획은 평점 또는 에피소드 && 북마크의 값이 하나라도 있냐없냐를 기준으로 바꿨다.
10/08
- [x] init 후 옵저버블 바인딩 시 스레드 문제