Skip to content

Commit

Permalink
Added numberOfExpenses for ExpenseView
Browse files Browse the repository at this point in the history
  • Loading branch information
Ka4aH4uk committed Aug 18, 2023
1 parent 31c93cd commit 08f91bb
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
4 changes: 4 additions & 0 deletions Expense Tracker/Model/ExpenseCategory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@ struct ExpenseCategory: Codable, Identifiable {
var id = UUID()
let name: String
var expenses: [Expense] = []

var numberOfExpenses: Int {
expenses.count
}
}
3 changes: 1 addition & 2 deletions Expense Tracker/View/Expense/ExpenseView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ struct ExpenseView: View {
Text(category.name)
.font(.headline)
.foregroundColor(isDarkMode ? .white : .black)
.padding(.vertical, 2)
Text("Кол-во платежей: \(category.expenses.count)")
Text("Кол-во платежей: \(category.numberOfExpenses)")
.font(.caption2)
.foregroundColor(.gray)
}
Expand Down
18 changes: 16 additions & 2 deletions Expense Tracker/ViewModel/ExpenseViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,26 @@ class ExpenseViewModel: ObservableObject {
}

private func loadCategories() {
if let savedCategories = UserDefaults.standard.data(forKey: "ExpenseCategories") {
if let decodedCategories = try? JSONDecoder().decode([ExpenseCategory].self, from: savedCategories) {
if let savedCategoriesData = UserDefaults.standard.data(forKey: "ExpenseCategories") {
if var decodedCategories = try? JSONDecoder().decode([ExpenseCategory].self, from: savedCategoriesData) {
for index in 0..<decodedCategories.count {
let categoryName = decodedCategories[index].name
let expenses = loadExpenses(for: categoryName)
decodedCategories[index].expenses = expenses
}
expenseCategories = decodedCategories
}
}
}

private func loadExpenses(for categoryName: String) -> [Expense] {
if let savedExpensesData = UserDefaults.standard.data(forKey: categoryName) {
if let loadedExpenses = try? JSONDecoder().decode([Expense].self, from: savedExpensesData) {
return loadedExpenses
}
}
return []
}

func saveCategories() {
if let encodedCategories = try? JSONEncoder().encode(expenseCategories) {
Expand Down

0 comments on commit 08f91bb

Please sign in to comment.