Расширение комментария:
У вас должны быть массивы в связанных значениях дел. Но для удобства создайте методы с переменными параметрами.
Пример:
enum ModelRule {
case required(keys: [String])
case nonEmptyString(keys: [String])
case emptyString(key: String)
init(required keys: String...) { // It could be static func, but init here works and looks better
self = .required(keys: keys)
}
init(nonEmptyString keys: String...) {
self = .nonEmptyString(keys: keys)
}
init(emptyString key: String) { // Added this just for my OCD, not actually required
self = .emptyString(key: key)
}
}
Использование:
let required = ModelRule(required: "a", "b", "c") // .required(keys: ["a", "b", "c"])
let nonEmpty = ModelRule(nonEmptyString: "d", "e", "f") // .nonEmptyString(keys: ["d", "e", "f"])
let empty = ModelRule(emptyString: "g") // .emptyString(key: "g")