도서 검색 앱의 기능 추가와 개선 작업을 진행하였다. CoreData를 도입하여 데이터 영구 저장소를 구현하고, UI/UX를 전반적으로 수정했다.
class CoreDataManager {
static let shared = CoreDataManager()
private init() {}
lazy var persistentContainer: NSPersistentContainer = {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
fatalError("AppDelegate not found")
}
return appDelegate.persistentContainer
}()
// CoreData 저장, 삭제, 조회 기능 구현
func saveBook(_ book: Book) {
// 저장 로직
}
func fetchBooks() -> [Book] {
// 조회 로직
return []
}
func deleteBook(with isbn: String) {
// 삭제 로직
}
}
class BookmarkViewModel {
private let coreDataManager = CoreDataManager.shared
func addBookmark(_ book: Book) {
coreDataManager.saveBook(book)
onBookmarksUpdated?()
}
func deleteAllBookmarks() {
let bookmarks = getBookmarks()
bookmarks.forEach { book in
removeBookmark(isbn: book.isbn)
}
onBookmarksUpdated?()
}
}
class BookDetailViewController {
var isBookmarked: Bool = false
private func setupActionButton() {
if !isBookmarked {
actionButton.setTitle("담기", for: .normal)
actionButton.backgroundColor = .systemGreen
}
}
}
class BookmarkViewController {
private let deleteAllButton: UIButton = {
let button = UIButton()
button.setTitle("전체삭제", for: .normal)
button.setTitleColor(.systemRed, for: .normal)
return button
}()
@objc private func deleteAllButtonTapped() {
guard viewModel.bookmarkCount > 0 else {
// 경고 얼럿 표시
return
}
// 삭제 확인 얼럿
let alert = UIAlertController(...)
}
}