Initialisierung der MIDIMetaEvent-Struktur
Ich habe Mühe, die MIDIMetaEvent-Struktur in MusicPlayer.h mit swift zu initialisieren. Die Header-Datei definiert die Struktur wie folgt:
struct MIDIMetaEvent {
var metaEventType: UInt8
var unused1: UInt8
var unused2: UInt8
var unused3: UInt8
var dataLength: UInt32
var data: (UInt8)
}
Was bis zu diesem 'Daten'-Mitglied ziemlich einfach zu sein scheint. Ist das eine 1-Element-Tupeldefinition? Ich kann leicht alle anderen Strukturelemente initialisieren, habe aber vergeblich versucht, 'data' auf etwas anderes als einen einzelnen Wert zu setzen. In meinem Code habe ich ein UInt8-Array namens myData verwendet und versucht, die Struktur folgendermaßen zu initialisieren:
var msg = MIDIMetaEvent(
metaEventType : UInt8(0x7F),
unused1 : UInt8(0),
unused2 : UInt8(0),
unused3 : UInt8(0),
dataLength : UInt32(myData.count),
data : UnsafeBufferPointer<UInt8>(start: UnsafePointer<UInt8>(myData), count:myData.count) )
Aber der Compiler ist damit nicht zufrieden und beschwert sich über "UnsafeBufferPointer no convertible to UInt8". Wenn ich einfach Daten auf einen einzelnen Wert setze, aber dataLength auf einen Wert größer als 1 setze, zeigt die resultierende MIDIEventData, dass der erste Wert in dem Ereignis das ist, was ich in 'data' gefolgt von Kauderwelschdatenbytes gemäß 'dataLength'-Bytes festgehalten habe . "Daten" werden also eindeutig als eine Art kontinuierlicher Speicher angesehen.
Wie setze ich dieses 'data'-Element auf UInt8-Elemente aus einem Array?