Я импортировал Cocoapod, который помогает подключить мое приложение к устройству с низким энергопотреблением Bluetooth. При попытке получить доступ к экземпляру класса я получаю сообщение об ошибке sharedInstance недоступен из-за «внутреннего» уровня защиты. Почему я получаю эту ошибку?
Ниже приведен класс, содержащий экземпляр.
import Foundation
import CoreBluetooth
import Alamofire
import SwiftyJSON
public class OBD2_BLE: NSObject, CBCentralManagerDelegate,
CBPeripheralDelegate {
var centralManager: CBCentralManager!
var obd2: CBPeripheral?
var dataCharacteristic:CBCharacteristic?
var obdCommands:[String: String]! = [
"speed": "010D",
"vin": "0902"
]
var configurationCommands = [
"ATE0",
"ATH0",
"ATS0",
"ATL0",
"ATSP0"
]
var obdResponse:[UInt8] = []
let endOfResponseNotificationIdentifier =
Notification.Name("endOfResponseNotificationIdentifier")
// setupOutput is expected output from device after reset (no prior
configuration)
// partialsetupOutput is expected output from device without reset
(device remained configured from previous run)
let restartSetupOutput = "\r\rELM327
v1.5\r\r>ATE0\rOK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
let setupOutput = "ATE0\rOK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
let partialsetupOutput = "OK\r\r>OK\r\r>OK\r\r>OK\r\r>OK\r\r>"
var setupComplete = false
var vinNumber:String?
static let sharedInstance = OBD2_BLE()
private static let setup = OBD2_BLESetup()
class func setup(restoreId: String){
OBD2_BLE.setup.restoreId = restoreId
}
public override init() {
super.init()
let restoreId = OBD2_BLE.setup.restoreId
if restoreId == nil {
self.initWithoutBackground()
} else {
self.initWithBackground(restoreId: restoreId!)
}
}
Ниже я пытаюсь получить доступ к экземпляру
import UIKit
import CoreBluetooth
import OBD2_BLE
class BluetoothViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var bluetoothTableView: UITableView!
var deviceArray = [CBPeripheral]()
var centralManager : CBCentralManager!
var currentPeripheral : CBPeripheral?
let obd2 = OBD2_BLE.sharedInstance // Where i receive error
var currentRow : IndexPath?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
centralManager = CBCentralManager(delegate: self, queue: nil)
bluetoothTableView.dataSource = self
bluetoothTableView.delegate = self
}