gpt4 book ai didi

ios - didDiscoverPeripheral "fail to build"错误

转载 作者:可可西里 更新时间:2023-11-01 01:39:27 29 4
gpt4 key购买 nike

我不确定为什么这段代码无法构建并且错误消息看起来很神秘。

代码:

var centralManager: CBCentralManager!;
var nrf8001Peripheral: CBPeripheral!;

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

// initialize centralManager
self.centralManager = CBCentralManager(delegate: self, queue: nil);

// start scanning for device
self.centralManager.scanForPeripheralsWithServices([UART_SERVICE_UUID], options:nil);
}

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

//print out the name of the scanned peripheral
print("Discovered \(peripheral.name)")

//print out the UUID of the scanned peripheral
print("NSUUID string \(peripheral.identifier.UUIDString)")

//stop scanning when found
self.centralManager.stopScan()

//connect when found
self.centralManager.connectPeripheral(peripheral, options:nil);
}

我从 XCode 编译器收到的错误是:

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

通过查看 CoreBluetooth 文档,似乎方法语法和参数是正确的,并且参数的可选性直接从规范表中复制:https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBCentralManagerDelegate_Protocol/#//apple_ref/occ/intfm/CBCentralManagerDelegate/centralManager:didDiscoverPeripheral:advertisementData:RSSI :

任何帮助将不胜感激!谢谢

根据评论:

  1. 使用 XCode 7 测试版
  2. 当我将函数声明更改为:

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

我仍然遇到相同的构建错误。

  1. 我的 centralManagerDidUpdateState: 方法是

    func centralManagerDidUpdateState(central: CBCentralManager) {

    print("centralManagerDidUpdateState:");

    switch (central.state) {

    case .PoweredOff:
    print("CBCentralManagerStatePoweredOff");

    case .Resetting:
    print("CBCentralManagerStateResetting");

    case .PoweredOn:
    print("CBCentralManagerStatePoweredOn");

    //scan for peripheral devices
    self.centralManager.scanForPeripheralsWithServices([UART_SERVICE_UUID], options:nil);

    case .Unauthorized:
    print("CBCentralManagerStateUnauthorized");

    case .Unsupported:
    print("CBCentralManagerStateUnsupported");

    default:
    print("CBCentralManagerStateUnknown");
    }
    }

最佳答案

感谢您的建议;我最终通过 XCode 7 文档找到了答案。以下函数的 XCode 6 语法如下:

func centralManagerDidUpdateState(central: CBCentralManager!) {}

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

func centralManager(central: CBCentralManager!, didConnectPeripheral peripheral: CBPeripheral!) {}

func centralManager(central: CBCentralManager!, didDisconnectPeripheral peripheral: CBPeripheral!, error: NSError!) {}

func peripheral(peripheral: CBPeripheral!, didDiscoverServices error: NSError!) {}

func peripheral(peripheral: CBPeripheral!, didDiscoverCharacteristicsForService service: CBService!, error: NSError!) {}

func peripheral(peripheral: CBPeripheral!, didUpdateNotificationStateForCharacteristic characteristic: CBCharacteristic!, error: NSError!) {}

func peripheral(peripheral: CBPeripheral!, didUpdateValueForCharacteristic characteristic: CBCharacteristic!, error: NSError!) {}

但是,这些函数将与 XCode 7 CoreBluetooth 库声明冲突。

注意可选值数据类型的不同用法。

(XCode 6) 错误:NSError! 对比 (XCode 7) 错误: NSError?

(XCode 6) advertisementData : [NSObject : AnyObject]! vs. (XCode 7) advertisementData [String : AnyObject]

适用于 XCode 7 beta 的函数声明实际上如下:

func centralManagerDidUpdateState(central: CBCentralManager) {}

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

func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {}

func centralManager(central: CBCentralManager, didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {}

func peripheral(peripheral: CBPeripheral, didDiscoverServices error: NSError?) {}

func peripheral(peripheral: CBPeripheral, didDiscoverCharacteristicsForService service: CBService, error: NSError?) {}

func peripheral(peripheral: CBPeripheral, didUpdateValueForCharacteristic characteristic: CBCharacteristic, error: NSError?) {}

func peripheral(peripheral: CBPeripheral, didUpdateNotificationStateForCharacteristic characteristic: CBCharacteristic, error: NSError?) {}

func centralManager(central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: NSError?) {}

希望对遇到同样问题的其他人有所帮助!

关于ios - didDiscoverPeripheral "fail to build"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31576864/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com