私は、次の列挙型があります:私はNSData
に変換するには、次のコードを使用しスウィート列挙型バイト表現とは何ですか?
enum Enum: UInt8
{
case A = 0x00
case B = 0x01
case C = 0x10
}
を:
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