728x90 SMALL mvvm7 🧾 iOS MVVM 가계부 앱 - 거래 내역 조회(Read), 수정(Update), 삭제(Delete) 기능 완벽 구현 이전 글에서는 MVVM 구조에서의 TransactionViewModel 전반 구조와 초기화 방식에 대해 정리했습니다.이번 글에서는 그 ViewModel 내부에서 수행되는 데이터 읽기, 수정, 삭제 기능을 소개합니다.✳️ 전체 흐름 요약모든 데이터 처리는 TransactionCoreDataManager를 통해 Core Data와 통신하며, Combine을 통해 비동기 스트림을 처리합니다. 📌 관련 구조:TransactionViewModel → View에서 호출TransactionCoreDataManager → Core Data와 실제 상호작용@Published → UI 바인딩을 위한 데이터 상태 반영📖 Read - 거래 내역 불러오기✅ 모든 거래 내역 불러오기 (readAllTransactions()).. 2025. 8. 3. 💸 iOS MVVM 가계부 앱 - ViewModel(TransactionViewModel) 구조 완벽 정리 가계부 앱을 MVVM 구조로 개발하면서 핵심 역할을 하는 TransactionViewModel에 대해 소개합니다.이 글에서는 ViewModel의 역할, 내부 구조, init 설계 이유, 그리고 View와의 데이터 흐름까지 모두 짚어볼게요.🎯 ViewModel이란?MVVM에서 ViewModel은 View와 Model 사이의 중간 매개체로 작동합니다.사용자의 입력을 받아 Model에 반영하고, Model의 데이터를 가공해 View에 제공합니다.💡 이 글에서는 실제 프로젝트에 사용한 TransactionViewModel을 기준으로 설명합니다.📦 전체 구조 살펴보기final class TransactionViewModel { // MARK: - Published Properties @Pu.. 2025. 8. 3. 📦 iOS MVVM 가계부 앱 - Core Data 삭제(Delete) + 이미지 제거까지 정리 가계부 앱에서 한 번 입력한 지출/수입 데이터를 삭제하는 기능은 반드시 필요합니다. 특히 사용자가 실수로 입력했거나, 잘못된 이미지를 포함한 경우 Core Data + 이미지 파일까지 함께 삭제하는 구조가 되어야 합니다. 이번 글에서는 deleteTransaction(id:) 함수를 중심으로 Core Data에서의 삭제 처리 흐름과 이미지 정리 방식까지 상세히 정리합니다.🧩 1. 삭제 함수 코드func deleteTransaction(id: UUID) -> AnyPublisher { return Future { [weak self] promise in guard let self = self else { print("❌ deleteTransaction: self가 n.. 2025. 8. 2. 📚 iOS MVVM 가계부 앱 - Core Data 수정(Update) + 이미지까지 깔끔히 반영하는 법 가계부 앱을 만들면서 생기는 대표적인 고민 중 하나는 "기존에 등록된 내역을 수정할 때 이미지나 메모를 어떻게 반영하지?" 입니다.이번 글에서는 Core Data에서 기존 내역을 업데이트하고, 선택적으로 이미지까지 덮어쓸 수 있는 구조를 소개합니다.💡 목표 기능사용자가 등록한 기존 내역(지출/수입)을 수정메모, 금액, 카테고리 등 변경 사항 반영기존 이미지가 있을 경우:이미지 삭제이미지 교체기존에 이미지가 없더라도 새로 추가 가능📦 업데이트 함수 코드func updateTransaction(_ updatedTransaction: ExpenseModel) -> AnyPublisher { return Future { [weak self] promise in guard let self =.. 2025. 8. 2. 📚Core Data로 지출 내역 불러오기(Read) 정리 ✨ 목표이번 글에서는 가계부 앱에서 Core Data로 저장된 지출 내역을 전체 조회하거나 특정 ID로 조회하는 방법과, Core Data Entity(ExpenseEntity)를 우리가 ViewModel/화면에서 사용하기 위한 데이터 모델(ExpenseModel)로 변환하는 방법을 함께 정리합니다.✅ 전체 흐름 요약역할함수 이름설명CoreData → Model 변환toModel()Entity 데이터를 앱에서 사용할 수 있는 형태로 변환전체 데이터 읽기readAllTransaction()모든 지출 내역을 최신순으로 읽기특정 데이터 읽기readTransactionByID(by:)특정 ID 기반으로 하나의 내역 읽기 1️⃣ ExpenseEntity → ExpenseModel 변환: toModel()exten.. 2025. 8. 2. 💾 Core Data와 FileManager로 지출 내역 저장하기 Core Data + FileManager + Combine 조합으로 데이터와 이미지까지 한 번에 저장하기✨ 목표지출 내역을 저장할 때,기본 정보(날짜, 금액, 메모 등)는 Core Data에선택 이미지가 있다면 FileManager에 저장하고 → 저장된 이미지 경로를 Core Data에 함께 저장해 관리하는 방식.✅ 핵심 클래스: TransactionCoreDataManagerfinal class TransactionCoreDataManager { // MARK: - Variable static let shared = TransactionCoreDataManager() private let context = (UIApplication.shared.delegate as! AppDe.. 2025. 8. 1. 📱 iOS 가계부 앱 데이터 모델 설계하기 enum + class를 활용한 깔끔하고 확장성 높은 데이터 구조 설계💡 어떤 앱인가요?제가 만들고 있는 이 앱은 지출이나 수입을 이미지(카메라/앨범)와 함께 기록할 수 있는 iOS 가계부 앱입니다.예를 들어:영수증을 찍어서 저장하거나감성적인 쇼핑 사진을 남기거나어떤 항목에 얼마를 썼는지를 사진과 함께 기록하는 목적이에요.그래서 금액, 카테고리, 메모 외에도 사진(image) 필드가 꼭 필요했고, 수입/지출을 명확하게 분리하면서도 관리하기 쉽도록 데이터 모델을 설계했습니다.🧱 데이터 구조 설계1. enum TransactionType: 수입 / 지출 타입수입(income)과 지출(expense)을 구분각각에 따른 카테고리 목록과 아이콘 맵핑 제공2. class ExpenseModel: 실제 기록되는 .. 2025. 7. 30. 이전 1 다음 728x90 LIST