Тип obj
- это кортеж из четырех UInt8
значений.
Вы можете получить доступ к элементам кортежа следующим образом:
let obj: (UInt8, UInt8, UInt8, UInt8) = (2, 4, 6, 8) // let obj be a tuple of four UInt8 values
obj.0 // 2
obj.1 // 4
Поскольку Data
эффективноCollection
байтов, он может быть инициализирован из последовательности UInt8
значений.
Так что самым простым решением было бы просто создать Array
из элементов кортежа и инициализировать Data
value from it:
let data = Data([obj.0, obj.1, obj.2, obj.3])
Это, однако, не самое общее решение, и оно работает только тогда, когда кортеж содержит только UInt8
значений.
Более общий подход заключается в преобразованииСначала введите UnsafePointer
и создайте из него значение Data
:
let data = withUnsafePointer(to: &obj) { ptr -> Data in
return Data(bytes: ptr, count: MemoryLayout.size(ofValue: obj)
}