Ответ
Нет, не может. В Swift перечисление (enum) может быть определено либо с raw values, либо с associated values, но не с обоими одновременно для одного и того же case. Это архитектурное ограничение языка.
- Raw Value — это предопределенное значение примитивного типа (String, Int, Character и т.д.), одинаковое для всех экземпляров конкретного кейса.
enum NetworkError: Int { case badRequest = 400 case unauthorized = 401 case notFound = 404 } let errorCode = NetworkError.unauthorized.rawValue // 401 - Associated Value — это дополнительные данные произвольного типа, которые могут различаться у разных экземпляров одного и того же кейса.
enum NetworkResult { case success(data: Data, code: Int) case failure(error: Error) } let result = NetworkResult.success(data: someData, code: 200)
Почему нельзя совместить? Семантика raw value подразумевает, что кейс сам по себе является уникальным значением. Associated value же делает каждый экземпляр кейса контейнером для других данных, что противоречит идее фиксированного raw-значения.