swift - 如果没有更多上下文,表达式类型不明确 - CoreBluetooth

标签 swift class core-bluetooth ambiguous

我有这个代码块:

import Foundation
import CoreBluetooth

public class Service {

    static var centralManager: CBCentralManager!

    private init() {}

    public static func doSomething() {
        centralManager = CBCentralManager(delegate: self, queue: nil)
    }

}

但是在构建时,它说我在 doSomthing() 函数的一行中出现错误表达式类型不明确,没有更多上下文。造成这种情况的原因是什么?我怎样才能构建和运行这个小类?

最佳答案

要成为 CBCentralDelegate,您需要 a) 成为 NSObject 子类,b) 实际实现所需的协议(protocol)方法。您还应该创建一个共享实例来包装centralManager并仅公开您的界面。

public class Service: NSObject {
    static let shared = Service()
    private lazy var centralManager: CBCentralManager = {
        return CBCentralManager(delegate: self, queue: nil)
    }()

    private override init() {
        super.init()
    }

    public static func doSomething() {
        //Do things with centralManager here
    }
}

extension Service: CBCentralManagerDelegate {
    public func centralManagerDidUpdateState(_ central: CBCentralManager) {
    }
}

调用单例:

Service.shared.doSomething()

关于swift - 如果没有更多上下文,表达式类型不明确 - CoreBluetooth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524954/

相关文章:

ios - Xcode plist 验证脚本

javascript - 如何使用jquery将元素的标题添加到类属性

java - Java中如何指定主类

c# - 从类属性获取绑定(bind)值,默认绑定(bind)属性对我不起作用!

ios - CoreBluetooth 监控 100 个具有相同 UUID 且具有唯一输入的信标

ios - 在 Swift for Mac 上,BLE 的数据类型转换

swift - AVAudioSourceNode 在快速 Playground 中不起作用

ios - 更改 UITableView 中每个单元格的 UIButton

ios - 无法在 iOS Swift 3 中单击 UIBarButtonItem 添加目标和运行功能

ios - corebluetooth 和 ios 状态