2012-11-17 69 views
1

我試圖自動連接到藍牙設備。第一次,用戶必須通過IOBluetoothDeviceSelectorController選擇設備。這個地址然後存儲在某個地方,之後,這個設備應該自動連接。通過pairedDevices自動連接到藍牙設備

我的想法是使用pairedDevices遍歷所有已知和配對的藍牙設備,然後在設備地址等於先前地址時斷開。但由於某種原因,我無法讓這個突破發生。

這是我(有點縮短)代碼:

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; 
    } 
} 

日誌窗口輸出如下:

2012年11月18日00:06:02.385程序[5093:303] = 00 -80-25-15-29-20 =

2012年11月18日00:06:04.772程序[5093:303] = 00-80-25-15-29-20 =

輸出明確地匹配,但由於某種原因,if語句認爲是另外的,並且休息是從未執行過。我已經添加了第二條if語句進行檢查,並且這個按預期執行並啓動第二個中斷...

任何想法爲什麼地址字符串比較不起作用?

在此先感謝!

+0

NSString是一個對象;檢查文件 – 2012-11-18 00:13:21

回答

1

我解決它通過與「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; 
    } 
} 

感謝您尋找到也無妨!