Swift 无法将 CBPeripheral 类型的值转换为预期的参数类型
Swift Cannot convert value of type CBPeripheral to expected argument type
我的代码:
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
的类型从 [Any]
更改为 [CBPeripheral]
这将使编译器对其类型有更多了解,然后像这样使用 contains(where:)
来检查数组是否包含对象或没有。
var arrayPeripehral = [CBPeripheral]()
现在使用contains(where:)
这种方式来检查数组是否包含对象。
if self.arrayPeripehral.contains(where: { [=11=].name == peripheral.name }) {
return
}
同时将 arrayPeripheralName
的类型声明从 [Any]
更改为 [String]
,因为您只在其中附加 String
对象。
var arrayPeripheralName = [String]()
我的代码:
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
的类型从 [Any]
更改为 [CBPeripheral]
这将使编译器对其类型有更多了解,然后像这样使用 contains(where:)
来检查数组是否包含对象或没有。
var arrayPeripehral = [CBPeripheral]()
现在使用contains(where:)
这种方式来检查数组是否包含对象。
if self.arrayPeripehral.contains(where: { [=11=].name == peripheral.name }) {
return
}
同时将 arrayPeripheralName
的类型声明从 [Any]
更改为 [String]
,因为您只在其中附加 String
对象。
var arrayPeripheralName = [String]()