私はすでに次のように設定したデータでファイルされたリストを持っています:
public List<string> stringValues = new List<string>();
void Start()
{
stringValues.Add( "D5B51D14-9ED8-1530-5455-CFF2C4B86151");
stringValues.Add( "335B8649-AB22-E146-05A0-E9A4F3813A1F");
stringValues.Add( "28797BB5-9020-C0B5-F0CE-72AB7F1830E2");
stringValues.Add( "CD377141-422D-E8B0-B845-A0AF408E565A");
stringValues.Add( "DEEE65FB-FF1F-A6A9-4C3C-5784F41B0D39");
stringValues.Add( "70489FFA-6C88-A40D-C615-FD1EDEBD7643");
}
また、デバイスから送信されるデータを読み取り、画面に表示するメソッドもあります。必要なデータのみを取得して画面に表示するために、文字列からチョップビットを切り取る必要がありました。
メソッドは次のようになります。
private void AppendString(string message)
{
int startIndex = 38;
int endIndex = 36;
message = message.Substring(startIndex,endIndex);
messageCount = "length is " + message.Length.ToString();
outputContent.text += "\n" + message;
}
問題は、私のプログラムに送信されるデータは、私にはわからないことです。それは何でも含むことができます。プログラムに必要なのは、必要な文字列の部分をチェックし、見つかった値をリスト内の値と比較することです。次に、リストに同じデータが含まれている場合は、何かを行います。
上記のコードでリストに動的に渡されるデータとリストを比較するにはどうすればよいですか?
編集
appendMessage 関数とその理由をもう少し説明します。
デバイスは、次の方法でデータを送信します。
<CBPeripheral: 0xda4bab0 identifier = D5B51D14-9ED8-1530-5455-CFF2C4B86151, Name = "estimote", state = connecting>
そのほとんどは問題ありませんが、私が気にかけているのは、行の識別子部分に保持されている長い数字だけです。私のプログラムでは、アプリを実行すると、その行全体を表示するのではなく、その番号だけが出力されます。他には何もありません。
したがって、その行を切り刻んだので、呼び出された UILabel (unity gui 文字列) に格納し、outputContent
呼び出し時に保持されているデータにアクセスしています。outputContent.text
以下に示すサンプルの回答と組み合わせると、リストチェックは次のようになります。
if(stringValues.Contains(outputContent.text))
{
Instantiate(estimote6Model, new Vector3(2.5f,0.7f,0), Quaternion.identity);
uuidString = "got an estimote 6";
}
ただし、表示されている文字列は必要な行の一部ですが、何も起こらず、まだ理由を解明しようとしています.