![](/img/trans.png)
[英]Swift Compiler Error: Cannot convert value of type '()' to specified type 'String'
[英]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
}()
但就我個人而言,我認為在初始化之后就開始管理經理並不是一個好主意。 如果它因錯誤而失敗並且您將其返回,則應用程序邏輯可能會在某些地方中斷。
此外,您可能let
MIDI.IO.Manager
變量,即不可變的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.