Swift 无法将 CBPeripheral 类型的值转换为预期的参数类型
Posted
技术标签:
【中文标题】Swift 无法将 CBPeripheral 类型的值转换为预期的参数类型【英文标题】:Swift Cannot convert value of type CBPeripheral to expected argument type 【发布时间】:2017-06-09 09:46:33 【问题描述】:我的代码:
func didDiscoverBLE(_ peripheral: CBPeripheral!, address: String!, rssi: Int32)
DispatchQueue.main.async(execute: () -> Void in
// Handle Discovery
self.arrayPeripehral.contains(where:peripheral)
return
)
self.arrayPeripehral.append(peripheral)
let title: String = "\(peripheral.name) \(address) (RSSI:\(rssi))"
self.arrayPeripheralName.append(title)
在这一行我有一个问题:
self.arrayPeripehral.contains(where:peripheral)
return
)
有人有想法吗?
这是我从客观 c 复制到 swift 的代码,但遇到了这个错误
- (void)didDiscoverBLE:(CBPeripheral *)peripheral address:(NSString *)address rssi:(int)rssi
dispatch_async(dispatch_get_main_queue(), ^
// Handle Discovery
if([arrayPeripehral containsObject:peripheral])
return;
[arrayPeripehral addObject:peripheral];
NSString * title = [NSString stringWithFormat:@"%@ %@ (RSSI:%d)", peripheral.name, address, rssi];
[arrayPeripheralName addObject:title];
【问题讨论】:
能否出示arrayPeripehral
的声明。
var arrayPeripehral = [Any]()var arrayPeripheralName = [Any]()
我正在使用框架 obj c,并且我有桥接文件,并且我声明了 peripheral var peripheral: CBPeripheral? var arrayPeripheral = [Any]() var arrayPeripheralName = [Any]()
请编辑您的问题,而不是在 cmets 中添加信息。
【参考方案1】:
将arrayPeripehral
的类型从[Any]
更改为[CBPeripheral]
,这将使编译器对其类型有更多了解,然后像这样使用contains(where:)
来检查数组是否包含对象。
var arrayPeripehral = [CBPeripheral]()
现在使用contains(where:)
这种方式来检查数组是否包含对象。
if self.arrayPeripehral.contains(where: $0.name == peripheral.name )
return
还将arrayPeripheralName
的类型声明从[Any]
更改为[String]
,因为您只在其中附加String
对象。
var arrayPeripheralName = [String]()
【讨论】:
这是我的代码,但找不到设备drive.google.com/open?id=0B0YSY8kyU68lVHo1aVU2a29aY0E drive.google.com/open?id=0B0YSY8kyU68lbU9Yc2hfUlNFbkk 那是我正在转换为 swift 3 的项目 @AlexArshansky 您已要求更正代码,我已建议您如果还有其他问题,请在此处提出新问题 非常感谢!!!我笨我忘了 myApp.myBle.myDiscoverDelegate = self; 我看到了设备,但我仍然没有进行连接以上是关于Swift 无法将 CBPeripheral 类型的值转换为预期的参数类型的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11 CoreBluetooth:无法删除关键路径“委托”的观察者 CBPeripheral