【问题标题】:CoreBluetooth XcodeCoreBluetooth Xcode
【发布时间】:2015-08-29 14:48:28
【问题描述】:

我遵循了正确使用 CoreBluetooth 的所有步骤,但 Xcode 一直告诉我以下事情:

Objective-C 方法 'centralManager:didDiscoverPeripheral:advertisementData:RSSI:' 方法提供 'centralManager(:didDiscoverPeripheral:advertisementData:RSSI:)' 与可选要求方法冲突 'centralManager(:didDiscoverPeripheral:advertisementData:RSSI:)' 在 协议'CBCentralManagerDelegate'

import UIKit
import CoreBluetooth

class SecondViewController: UIViewController, CBCentralManagerDelegate {

var centralManager:CBCentralManager!
var blueToothReady = false

override func viewDidLoad() {
    super.viewDidLoad()
    startUpCentralManager()
}

func startUpCentralManager() {
    print("Initializing central manager")
    centralManager = CBCentralManager(delegate: self, queue: nil)
}

func discoverDevices() {
    print("discovering devices")
    centralManager.scanForPeripheralsWithServices(nil, options: nil)
}

func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
    print("Discovered \(peripheral.name)")
}

func centralManagerDidUpdateState(central: CBCentralManager) {
    print("checking state")
    switch (central.state) {
    case .PoweredOff:
        print("CoreBluetooth BLE hardware is powered off")

    case .PoweredOn:
        print("CoreBluetooth BLE hardware is powered on and ready")
        blueToothReady = true;

    case .Resetting:
        print("CoreBluetooth BLE hardware is resetting")

    case .Unauthorized:
        print("CoreBluetooth BLE state is unauthorized")

    case .Unknown:
        print("CoreBluetooth BLE state is unknown");

    case .Unsupported:
        print("CoreBluetooth BLE hardware is unsupported on this platform");

    }
    if blueToothReady {
        discoverDevices()
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

【问题讨论】:

标签: xcode swift core-bluetooth


【解决方案1】:

参数从隐式展开的可选项(例如,CBCentralManager!)更改为普通的非可选项(例如,CBCentralManager - 没有!)。

函数签名应该是这样的(Xcode 7.1, Swift 2.1) -

func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-06
    • 2014-03-24
    • 2014-05-19
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2017-09-20
    相关资源
    最近更新 更多