![](/img/trans.png)
[英]swift - how switch between two viewcontrollers from one tabBarItem , and customize it?
[英]How to switch between two enumerations in Swift?
我有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 }
}
您可以使TypeOfCalculation
具有關聯的值 :
enum TypeOfCalculation {
case consuption(category: CategoryForConsuption)
case income(category: CategoryForIncome)
}
然后,您只需要在模型中具有typeOfCalculation
:
class Transaction {
var typeOfCalculation: TypeOfCalculation
}
我還建議您重命名案例和枚舉名稱:
enum Calculation {
case consumption(category: ConsumptionCategory)
case income(category: IncomeCategory)
}
class Transaction {
var calculation: Calculation
}
然后,您可以像這樣打開calculation
:
switch transaction {
case consumption(let category):
...
case income(let category):
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.