2017-06-09 2 views
0

Le code que j'ai:Swift ne peut pas convertir la valeur de type CBPeripheral type d'argument attendu

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) 

j'ai dans cette ligne un problème:

self.arrayPeripehral.contains(where:peripheral) 
    return 
}) 

Quelqu'un at-il une idée?


Voici le code que je copiais du obective c au rapide et suis resté bloqué sur cette erreur

- (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]; 
+0

Pouvez-vous afficher la déclaration de 'arrayPeripehral'. –

+0

var arrayPeripehral = [Tout]() var arrayPeripheralName = [Tout]() –

+0

Je suis l'utilisation du cadre obj c et j'ai un fichier de bridging et je déclare périphérique var périphérique: CBPeripheral? var arrayPeripehral = [Tout]() var arrayPeripheralName = [Tout]() –

Répondre

0

Modifier le type de arrayPeripehral à [CBPeripheral] de [Any] qui donnera plus d'idée compilateur de son tapez puis utilisez contains(where:) comme ceci pour vérifier le tableau contient l'objet ou non.

var arrayPeripehral = [CBPeripheral]() 

utiliser maintenant contains(where:) cette façon de vérifier tableau contient l'objet ou non.

if self.arrayPeripehral.contains(where: { $0.name == peripheral.name }) { 
    return 
} 

changer aussi la déclaration de type de arrayPeripheralName-[String] de [Any] que vous apposent que String objet en elle.

var arrayPeripheralName = [String]() 
+0

voici mon code mais le périphérique n'est pas trouvé https://drive.google.com/open?id=0B0YSY8kyU68lVHo1aVU2a29aY0E –

+0

@AlexArshansky Êtes-vous toujours confronté à une erreur? –

+0

oui de plus en plus ... je ne vois pas les appareils –