swift objective-c 错误无法将类型 () -> () 的值转换为指定类型 MIDI.IO.Manager
swift objective-c error Cannot convert value of type () -> () to specified type MIDI.IO.Manager
我收到错误消息:无法将类型“() -> ()”的值转换为指定类型 '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)
}
}
}
如果你想要可计算的属性,那么
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
您正在将 () -> 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
}()
但我个人认为在初始化之后就启动管理器不是一个好主意。如果它因错误而失败,而你 return 它,应用程序逻辑可能会在某些地方中断。
您可能还想使 MIDI.IO.Manager
let
可变,即不可变的。
我收到错误消息:无法将类型“() -> ()”的值转换为指定类型 '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)
}
}
}
如果你想要可计算的属性,那么
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
您正在将 () -> 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
}()
但我个人认为在初始化之后就启动管理器不是一个好主意。如果它因错误而失败,而你 return 它,应用程序逻辑可能会在某些地方中断。
您可能还想使 MIDI.IO.Manager
let
可变,即不可变的。