我正在尝试自动连接到蓝牙设备。用户必须首次通过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语句用于检查,并且这个语句按预期执行并启动第二个中断...
为什么地址字符串比较不起作用?
提前致谢!
答案 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;
}
}
感谢您无论如何都要进行调查!