Я строю систему обработки ошибок и хочу объединить несколько кодов ошибок в один код, который впоследствии может быть разложен на отдельные ошибки с помощью кода Swift. Код нижнего уровня генерирует конкретные ошибки, код более высокого уровня ловит его, добавляет свои собственные коды ошибок, а обработчик ошибок верхнего уровня анализирует результат для принятия мер.
Я видел, как это реализовано с помощью побитовых операторов, но мне любопытно, есть ли более простой способ сделать это с целыми числами или есть что-то, предоставленное перечислениями Swift5, которые могут помочь мне получить желаемое поведение.
let lowLevelError = 0b00000001
let midLevelError = 0b00000010
let highLevelError = 0b00000100
let allErrors = lowLevelError + midLevelError + highLevelError // (0b00000111)
let hasLowLevelError = (allErrors & 0b00000001) > 0b00000000
Существует ли более простой способ реализации кодов ошибок с использованием десятичной системы без необходимости считать нули и байтовые позиции?
let connectionError = 3000
let missingInfo = 200
let missingHeader = 20
let allErrors = connectionError + missingInfo + missingHeader //3220
let hasMissingHeader = allErrors ... // How to implement this?
(Мне любопытно, могут ли быть полезны связанные перечисления или я должен просто объявить все возможные коды ошибок, как в OSStatus: https://www.osstatus.com/search/results?platform=all&framework=all&search=-25300)