【发布时间】:2020-03-08 23:08:39
【问题描述】:
我目前正在创建设置页面。我正在尝试将 Enum 动态分配到我的 struct 属性中。 我想要实现的是,每当调用 Settings 结构时,它都会自动将所有相应的设置附加在一起。下面是枚举
protocol BaseSettings {}
enum SettingsCategory: String, CaseIterable {
case sales = "Sales"
case payment = "Payment"
}
struct SettingsSection {
var settingsNameArray: [BaseSettings]
var settingsCategoryName: SettingsCategory
init(settingsCategory: SettingsCategory) {
self.settingsCategoryName = settingsCategory
switch settingsCategory {
case .sales:
self.settingsNameArray = SalesSettings.allCases
case .payment:
self.settingsNameArray = PaymentSettings.allCases
}
}
}
struct Settings {
var sections = [SettingsSection]()
init() {
for eachSettingCategory in SettingsCategory.allCases {
self.sections.append(SettingsSection(settingsCategory: eachSettingCategory))
}
}
}
enum SalesSettings: String, BaseSettings, CaseIterable {
case testSettings = "Test Sales Settings"
}
enum PaymentSettings: String, BaseSettings, CaseIterable {
case testSettings = "Test Payment Settings"
}
以上代码运行良好。设置按部分分组。但是,当我想填充每个枚举案例的 String 原始值时,我遇到了一个问题。由于 Protocol BaseSettings 不是枚举,我无法获取 rawValue
let settingsDataSource = SettingsConstant.Settings()
let settingsName = settingsDataSource.sections[indexPath.section].settingsNameArray[indexPath.row]
cell.textLabel?.text = "\(settingsName)"
tableView 不是显示每个枚举案例的 rawValue,而是显示每个枚举案例。
如何修复此数据结构?谁能指导我?
谢谢
【问题讨论】: