У меня есть следующий код в Objective-C (который использует структуру Audio Toolbox), который я пытаюсь преобразовать в Swift:
MusicTimeStamp timeStamp;
MusicEventType eventType;
const void *eventData;
UInt32 eventDataSize;
//MusicEventIteratorGetEventInfo is declared in Audio Toolbox framework as this:
//OSStatus MusicEventIteratorGetEventInfo ( MusicEventIterator inIterator, MusicTimeStamp *outTimeStamp, MusicEventType *outEventType, const void **outEventData, UInt32 *outEventDataSize );
MusicEventIteratorGetEventInfo(anIterator, &timeStamp, &eventType, &eventData, &eventDataSize);
switch (eventType){
case kMusicEventType_MIDINoteMessage:
//extract info from eventData assuming it's a MIDINoteMessage.
UInt8 channel = ((MIDINoteMessage *) eventData)->channel
UInt8 note = ((MIDINoteMessage *) eventData)->note
UInt8 velocity = ((MIDINoteMessage *) eventData)->velocity
Float32 duration = ((MIDINoteMessage *) eventData)->duration
case kMusicEventType_MIDIChannelMessage:
//extract info from eventData assuming it's a MIDIChannelMessage.
//case ..., etc.
}
Переписывая его на Swift, я не могу понять, как получить данные из части «const void *eventData», несмотря на чтение документации Apple по небезопасным указателям (ни один из их примеров, похоже, не относится к извлечению данных из небезопасный указатель таким образом). Это то, что у меня есть до сих пор, но я потерялся с точки зрения того, каким должен быть оператор switch:
var timeStamp: MusicTimeStamp = 0
var eventType: MusicEventType = 0
var eventData: UnsafeMutablePointer<UnsafePointer<Void>> = nil
var eventDataSize: UInt32 = 0
MusicEventIteratorGetEventInfo(iterator, &timeStamp, &eventType, eventData, &eventDataSize)
//what would simplest equivalent switch statement be?
Любая помощь будет оценена по достоинству - спасибо.