2012-11-17 3 views
1

J'essaie de me connecter automatiquement à un périphérique Bluetooth. La première fois, un utilisateur doit sélectionner le périphérique via le IOBluetoothDeviceSelectorController. Cette adresse est ensuite stockée quelque part et après, cet appareil devrait se connecter automatiquement. L'idée que j'avais était de parcourir tous les périphériques Bluetooth connus et appariés à l'aide de pairedDevices, puis de rompre lorsque l'adresse du périphérique est égale à l'adresse précédente. Mais pour une raison quelconque, je ne peux pas obtenir cette pause.Connexion automatique à un périphérique Bluetooth via pairedDevices

Ceci est mon (un peu raccourci) Code:

IOBluetoothDevice *device; 
NSArray *devices = [IOBluetoothDevice pairedDevices]; 
NSEnumerator *e = [devices objectEnumerator]; 
NSString *mytempstring, *mytempstring2 = @"AA"; 

while (device = [e nextObject]) 
{ 
    NSLog(@"=%@=", [device addressString]); 
    mytempstring = [device addressString]; 
    NSLog(@"=%@=", mytempstring); 
    if (mytempstring == @"00-80-25-15-29-20") 
    { 
     break; 
    } 
    if (mytempstring2 == @"AA") 
    { 
     break; 
    } 
} 

La sortie de la fenêtre du journal se présente comme suit:

18/11/2012 00: 06: 02,385 Programme [5093: 303] = 00 -80-25-15-29-20 =

2012-11-18 00: 06: 04,772 Programme [5093: 303] = 00-80-25-15-29-20 =

Les sorties correspondent clairement, mais pour une raison quelconque, l'affirmation if pense autrement et la rupture est jamais exécuté. J'ai ajouté une deuxième instruction if pour la vérification, et celle-ci s'exécute comme prévu et initie la deuxième pause ...

Des pensées pour lesquelles la chaîne d'adresse compare ne fonctionne pas?

Merci d'avance!

+0

NSString est un objet; vérifier docu –

Répondre

1

Je l'ai résolu en remplaçant le "==" satement avec l'énoncé "isEqualToString" ...

IOBluetoothDevice *device; 
NSArray *devices = [IOBluetoothDevice pairedDevices]; 
NSEnumerator *e = [devices objectEnumerator]; 

while (device = [e nextObject]) 
{ 
    if ([[device addressString] isEqualToString:@"00-80-25-15-29-20"]) 
    { 
     break; 
    } 
} 

Merci pour la recherche dans toute façon!

Questions connexes