通过pairedDevices自动连接到蓝牙设备

时间:2012-11-17 23:35:51

标签: objective-c xcode bluetooth

我正在尝试自动连接到蓝牙设备。用户必须首次通过IOBluetoothDeviceSelectorController选择设备。然后将该地址存储在某处,之后,该设备应自动连接。

我的想法是使用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语句用于检查,并且这个语句按预期执行并启动第二个中断...

为什么地址字符串比较不起作用?

提前致谢!

1 个答案:

答案 0 :(得分: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;
    }
}

感谢您无论如何都要进行调查!