首页 > 解决方案 > 如何快速创建主类/子类数据模型?

问题描述

我正在创建一个预算应用程序,我是编程新手。

我想创建一个类似于 Apple Reminders 应用程序的界面。

第一个视图是主要类别的列表。

当您点击主类别时,将出现子类别列表。

我不确定是使用类还是结构。

这是代码在我心中的样子:

struct Category {
    
    let mainCategories: [String] = [
    
        "Income",
        "Housing",
        "Transportation",
        "Food",
        ...
    ]
    
    let incomeSubCategory: [String] = [
        
        "Salary",
        "Bonus",
        "Rental Income",
        ...

        
    ]
    
    let housingSubCategory: [String] = [
    
        "Mortgage/Rent",
        "Property Tax",
        "Homeowner's Insurance",
        ...
    
    ]
}

我会以正确的方式解决这个问题吗?或者我应该使用类进行继承?

谢谢。

编辑:

我尝试过使用枚举,但数据似乎不如结构灵活和可访问。

是否可以使 SubCategory 成为 Category 中的结构数组?

像这样:

struct Category {
    
    var name: String
    var color: UIColor
    var amount: Double
    var subCategories: [SubCategory]
    
}

struct SubCategory {
    var name: String
    var amount: Double
}



let categories = [

    Category(
        name: "Income",
        color: UIColor(rgb: Constants.green), subCategories: [name: "Paycheck", amount: 2500.00])
    ]

标签: arraysswiftclassstruct

解决方案


使用Enums 代替struct/class.

enum MainCategory: String, CaseIterable {
    case income, housing //...
}
enum IncomeSubCategory: String, CaseIterable {
    case salary, bonus //...
}
enum HousingSubCategory: String, CaseIterable {
    case rent, tax //...
}

CaseIterable协议一致性允许您拥有数组allCases,以防您需要它逐个迭代值。像这样:

MainCategory.allCases.forEach { print($0) }

推荐阅读