在swift中访问固定长度C数组的元素

ja.*_*ja. 6 coremidi swift

我正在尝试将一些C代码转换为swift.(为什么? - 如果你问的话,在OS-X中使用CoreMIDI)

C代码是这样的

void printPacketInfo(const MIDIPacket* packet) {
   int i;
   for (i=0; i<packet->length; i++) {
      printf("%d ", packet->data[i]);
   }
 }
Run Code Online (Sandbox Code Playgroud)

而MIDIPacket的定义是这样的

struct MIDIPacket
 {
    MIDITimeStamp           timeStamp;
    UInt16                  length;
    Byte                    data[256];
 };
Run Code Online (Sandbox Code Playgroud)

我的斯威夫特是这样的

func printPacketInfo(packet: UnsafeMutablePointer<MIDIPacket>){
    // print some things
    print("length", packet.memory.length)
    print("time", packet.memory.timeStamp)
    print("data[0]", packet.memory.data.1)
    for i in 0 ..< packet.memory.length {
      print("data", i, packet.memory.data[i])
    }
  }
Run Code Online (Sandbox Code Playgroud)

但这会产生编译错误

错误:类型'(UInt8,UInt8,..剪切.. UInt8,UInt8,UInt8)'没有下标成员

那么如何取消引用固定大小数组的第i个元素呢?

小智 0

应该这样: for i in 0 ..< packet.memory.length

是这个吗? for i in 0 ..< packet.memory.data.length