带有委托的初始化:表达式类型在没有更多上下文的情况下不明确
init with delegate: Type of expression is ambiguous without more context
感觉很愚蠢,因为不久前我有一个非常相似的问题:
这次我将 viewDidLoad
内的 CBPeripheralManager
实例化为 iVar(同时尝试了 'lazy' 和 '!' 修饰符)。
我已经符合委托(类型和扩展),但是当我尝试为委托参数分配 self
而不是 nil
时,我仍然遇到相同的错误.
class vc: UIViewController {
var peripheralManager: CBPeripheralManager!
override func viewDidLoad() {
super.viewDidLoad()
peripheralManager = CBPeripheralManager(delegate: self, queue: nil)
}
}
extension vc: CBPeripheralDelegate { }
如何在此处获取 self 作为实例, 或者实际问题是什么?
您的扩展符合错误的协议。
变化:
extension vc: CBPeripheralDelegate
至:
extension vc: CBPeripheralManagerDelegate
然后您必须至少实现所需的最少协议方法。
感觉很愚蠢,因为不久前我有一个非常相似的问题:
这次我将 viewDidLoad
内的 CBPeripheralManager
实例化为 iVar(同时尝试了 'lazy' 和 '!' 修饰符)。
我已经符合委托(类型和扩展),但是当我尝试为委托参数分配 self
而不是 nil
时,我仍然遇到相同的错误.
class vc: UIViewController {
var peripheralManager: CBPeripheralManager!
override func viewDidLoad() {
super.viewDidLoad()
peripheralManager = CBPeripheralManager(delegate: self, queue: nil)
}
}
extension vc: CBPeripheralDelegate { }
如何在此处获取 self 作为实例, 或者实际问题是什么?
您的扩展符合错误的协议。
变化:
extension vc: CBPeripheralDelegate
至:
extension vc: CBPeripheralManagerDelegate
然后您必须至少实现所需的最少协议方法。