Тип выражения неоднозначен без контекста - CoreBluetooth - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть этот блок кода:

import Foundation
import CoreBluetooth

public class Service {

    static var centralManager: CBCentralManager!

    private init() {}

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

}

Но при сборке он говорит, что у меня есть ошибка Type of expression is ambiguous without more context в одной строке в моей функции doSomthing ().В чем может быть причина этого и как я могу заставить этот маленький класс создавать и запускать

1 Ответ

0 голосов
/ 28 ноября 2018

Чтобы стать CBCentralDelegate, вам необходимо: а) быть подклассом NSObject и б) фактически реализовать требуемый метод протокола.Вы также должны создать общий экземпляр, который оборачивает 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) {
    }
}

вызовите singleton с:

Service.shared.doSomething()
...