Я заранее извиняюсь, это трудно объяснить.При необходимости я предоставлю более подробную информацию.
Это структура констант, которую я использую для ссылки на UIButtons
в массиве коллекций и использования в качестве ключей для словарей.
struct Constants {
static let scoreA = "score_a"
static let scoreB = "score_b"
static let scoreC = "score_c"
static let scoreD = "score_d"
static let constantsArray = [kScoreA, kScoreB, kScoreC, kScoreD]
enum Scores: Int, CaseIterable { case scoreA = 1, ScoreB, ScoreC, ScoreD}
}
Мое начальное представлениеКонтроллер имеет много UIButtons
.Все кнопки UIB отмечены от 1 и выше.UIButtons
подключены к массиву IBOutlet UIButton.Таким образом, я могу избежать слишком большого числа IBOutlets
@IBOutlet var collectionOfScoreButtons: Array<UIButton>!
Я ссылаюсь на UIButtons, используя код, подобный этому, во всем моем приложении.
if let scoreAButton = collectionOfScoreButtons[Constants.Scores.scoreA.rawValue - 1]
Порядок UIButtons такой же, как порядок перечисления, напримерScoreA - это первый элемент в перечислении, а кнопка ScoreA - это первая кнопка в массиве.
И я могу получить ключ словаря, например, так, чтобы я мог обновить его значение
// after pushing a score button
func handleScoreValue(tag: Int) {
let scoreKey = Constants.constantScoreArray[tag - 1]
dictionary[scoreKey, default: 0] += 1
}
Я не уверен, есть ли лучший способ справиться с этой ситуацией.Код работает хорошо, но я чувствую, что есть лучший способ.