я следующее перечисление:Что такое представление байтового перечисления Swift?
enum Enum: UInt8
{
case A = 0x00
case B = 0x01
case C = 0x10
}
Я использую следующий код, чтобы преобразовать его в NSData
:
var value = Enum.C
let data = NSData(bytes: &value, length: 1)
Естественно, я ожидаю data
содержать 0x10
, однако, она содержит 0x02
.
Enum.A
содержит 0x00
и за Enum.B
содержит 0x01
.
Мне кажется, что он хранит индекс значения вместо его фактических необработанных данных. Может ли кто-нибудь объяснить это поведение?
P.S. Если я использую rawValue
, он отлично работает. Тем не менее, я хочу понять причину, потому что из-за этого я не могу создать общую функцию для преобразования значений в NSData.
В этом случае размер значения в байтах точно ** 1 ** (я использовал 'sizeof' вместо' 1') , Таким образом, это означает, что единственное, что сохранилось, - это номер заказа. – Werolik