Я использую Xcode 11, чтобы написать приложение. Следующий код читает данные MIDI с помощью библиотеки Coremidi с помощью swift. У меня проблема с доступом к переменной "dumpStr" в функции MYMIDIReadPro c. Потому что мне нужно подключить MIDI-устройство к iPhone через USB-кабель. Мне нужно просмотреть переменную в iPhone. Тем не менее, программа позволяет мне использовать только функцию печати. Кто-нибудь может мне помочь?
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textfield2: UITextField!
@IBOutlet weak var dytextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//textView.delegate = self
// let dytextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
textfield2.textColor=UIColor.black
textfield2.text = "hello"
textfield2.delegate=self
//self.view.addSubview(dytextField)
}
//func textFieldDidBeginEditing(textField: UITextField) {
//println("begin edit"+textField.text)
//}
var count:UInt32 = 0
let MyMIDIReadProc : MIDIReadProc = {pktList,readProcRefCon,srcConnRefCon in
let packetList:MIDIPacketList = pktList.pointee
var packet:MIDIPacket = packetList.packet
for _ in 1...packetList.numPackets
{
let bytes = Mirror(reflecting: packet.data).children;
var dumpStr = "";
var i = packet.length;
for (_, attr) in bytes.enumerated()
{
dumpStr += String(format:"$%02X ", attr.value as! UInt8);
i -= 1;
if (i <= 0)
{
break;
}
}
print(dumpStr)
packet = MIDIPacketNext(&packet).pointee;
}
}
@IBAction func showMessage(){
var midiClient: MIDIClientRef = 0;
var inPort:MIDIPortRef = 0;
var src:MIDIEndpointRef = MIDIGetSource(0);
MIDIClientCreate("MidiTestClient" as CFString, nil, nil, &midiClient);
MIDIInputPortCreate(midiClient, "MidiTest_InPort" as CFString, MyMIDIReadProc, nil, &inPort);
MIDIPortConnectSource(inPort, src, &src);
//PlaygroundPage.current.needsIndefiniteExecution = true
}
}