У меня есть 3 перечисления: тип расчета (+, -), категории для + (10 случаев), категории для - (15 случаев).
Итак, как использовать мое перечисление, чтобы, в зависимости от типа расчета, экземпляр модели мог принять желаемый листинг.
//Example of Model
class Transaction {
var typeOfCalculation: TypeOfCalculation
var category: CategoryForConsuption
}
enum TypeOfCalculation {
case income
case consuption
}
enum CategoryForConsuption{
case noCategories
case food
case cafesAndRestaurants
case manufacturedGoods
}
enum CategoryForIncome {
case salary
case debt repayment
}
Логика такова: если тип расчета - потребление, то мы переключаемся на CategoryForConsuption, а если доход, то мы меняем на CategoryForIncome.
Я редактировал модель:
enum Accounting {
case income(category: IncomeCategory)
case consumption(category: ConsumptionCategory)
}
enum ConsumptionCategory: String, CaseIterable {
case noCategories = "No categories"
case food = "Food"
case cafesAndRestaurants = "Cafes and Restaurants"
case manufacturedGoods = "Manufactured Goods"
case forceMajeure = "Force Majeure"
}
enum IncomeCategory: String, CaseIterable {
case salary = "Salary"
case deposit = "Deposit"
}
Но теперь у меня новая проблема. Потому что мне нужно использовать все это для моей модели данных (realM).
Что мне делать?
Вот моя старая модель данных:
@objc dynamic private var privateTypeOfCalculation: String = TypeOfCalculation.consumption.rawValue
var typeOfCalculation: TypeOfCalculation {
get { return TypeOfCalculation(rawValue: privateTypeOfCalculation)! }
set { privateTypeOfCalculation = newValue.rawValue }
}
@objc dynamic private var privateCategoryForConsuption: String = CategoryForConsuption.noCategories.rawValue
var categoryForConsuption: CategoryForConsuption {
get { return CategoryForConsuption(rawValue: privateCategoryForConsuption)! }
set { privateCategoryForConsuption = newValue.rawValue }
}