1

Bluetoothデバイスに自動的に接続しようとしています。初めて、ユーザーはIOBluetoothDeviceSelectorControllerを介してデバイスを選択する必要があります。このアドレスはどこかに保存され、その後、このデバイスは自動的に接続されます。

私が持っていたアイデアは、pairedDevicesを使用してすべての既知のペアリングされたBluetoothデバイスをステップスルーし、デバイスアドレスが前のアドレスと等しくなると中断することでした。しかし、どういうわけか私はこの休憩を起こさせることができません。

これは私の(やや短縮された)コードです:

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ステートメントは別のことを考え、ブレークは実行されません。チェック用に2番目のifステートメントを追加しましたが、これは期待どおりに実行され、2番目のブレークを開始します...

アドレス文字列の比較が機能しない理由はありますか?

前もって感謝します!

4

1 に答える 1

1

"=="satementを"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;
    }
}

とにかくそれを調べてくれてありがとう!

于 2012-11-18T18:34:27.560 に答える