В продолжение моей должности: Using Structs (Bytes) with SWIFT - Struct to NSData and NSData to StructИспользование структур (включает в себя массив байтов) с SWIFT - STRUCT к NSData и NSData к STRUCT
Я теперь находя, что если у меня есть-структуру с байтами смешивается с массивом байтов он не упаковывается правильно.
Пример кода:
struct exampleStruct {
var ModelNumber: Byte
var MajorVersion: Byte
var MinorVersion: Byte
var Revision: Byte
var Message: [Byte]
}
var myStruct = exampleStruct (
ModelNumber: 1,
MajorVersion: 2,
MinorVersion: 3,
Revision: 4,
Message: [0x48, 0x45, 0x4C, 0x4C, 0x4F] // HELLO
)
println(myStruct.Message)
возвращает правильный массив со значениями [72,69,76,76,79]
Однако, когда я преобразовать эту структуру, чтобы NSData с помощью:
// Struct to NSData.
var data = NSData(
bytes: & myStruct,
length: sizeof(exampleStruct)
)
Получать неожиданные результаты: "данные: < 01020304 00000000 108c91fd a87f0000>". Я ожидал "данных: < 01020304 48454c4c 4f>"
Похоже, это потому, что длина массива [Byte] не установлена. Может ли он быть установлен в SWIFT? При попытке совершить следующее:
struct exampleStruct {
var ModelNumber: Byte
var MajorVersion: Byte
var MinorVersion: Byte
var Revision: Byte
var Message: Byte[5] // << Set array length 5
}
У меня появляется предупреждение, в котором говорится: «Массивы фиксированной длины еще не поддерживаются».
В любом случае, чтобы обойти это ограничение?
'[Byte]' - Swift 'struct Array', а не массив C. –