我收到錯誤:無法將型別“()->()”的值轉換為指定型別“MIDI.IO.Manager”
我將把 midiManager 創造的價值暴露給 React Native。只是不明白為什么我得到這個代碼塊的錯誤
我不知道如何解決這個問題,因為我是 swift 和 Objective-c 的新手。任何幫助將不勝感激
import Foundation
import MIDIKit
@objc(MidiManager)
class MidiManager: NSObject{
var midiManager: MIDI.IO.Manager = {
let newManager = MIDI.IO.Manager(
clientName: "MIDIEventLogger",
model: "LoggerApp",
manufacturer: "Orchetect") { notification, manager in
print("Core MIDI notification:", notification)
}
do {
logger.debug("Starting MIDI manager")
try newManager.start()
} catch {
logger.default(error)
}
}
}

uj5u.com熱心網友回復:
如果你想要可計算的屬性,那么
var midiManager: MIDI.IO.Manager { // 1) remove =
let newManager = MIDI.IO.Manager(
clientName: "MIDIEventLogger",
model: "LoggerApp",
manufacturer: "Orchetect") { notification, manager in
print("Core MIDI notification:", notification)
}
do {
logger.debug("Starting MIDI manager")
try newManager.start()
} catch {
logger.default(error)
}
return newManager // 2) return object
}
如果你想用默認值初始化,那么
var midiManager: MIDI.IO.Manager = {
let newManager = MIDI.IO.Manager(
clientName: "MIDIEventLogger",
model: "LoggerApp",
manufacturer: "Orchetect") { notification, manager in
print("Core MIDI notification:", notification)
}
do {
logger.debug("Starting MIDI manager")
try newManager.start()
} catch {
logger.default(error)
}
return newManager // 1) return object
}() // 2) make call
uj5u.com熱心網友回復:
您將 type 的閉包分配給 type() -> Void的變數MIDI.IO.Manager。您需要稍微更改一個閉包,然后實際呼叫它:
var midiManager: MIDI.IO.Manager = {
let newManager = MIDI.IO.Manager(
clientName: "MIDIEventLogger",
model: "LoggerApp",
manufacturer: "Orchetect") { notification, manager in
print("Core MIDI notification:", notification)
}
do {
logger.debug("Starting MIDI manager")
try newManager.start()
} catch {
logger.default(error)
}
return newManager
}()
但就我個人而言,我認為在初始化之后就開始管理經理并不是一個好主意。如果它因錯誤而失敗并且您將其回傳,則應用程式邏輯可能會在某些地方中斷。
此外,您可能想要制作MIDI.IO.Manager let變數,即不可變的變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482397.html
