私のコードにはこのメソッドがあります:
- (void) fullDMXReceived:(NSString*)finalData {
これは、の完全な行が<DMX>255,255,255,255,255</DMX>
入り、その行が「finalData」に格納されたときに呼び出されます。
'finalData'がパーサーに送信する前に正しくフォーマットされているかどうかを判断するためのコードが必要です。
NSArray* allIncomingParseDMX1 = [finalData componentsSeparatedByString:@"<DMX>"];
NSString *parseDMXString1 = [allIncomingParseDMX1 objectAtIndex:1];
NSArray* allIncomingParseDMX2 = [parseDMXString1 componentsSeparatedByString:@"</DMX>"];
NSString *parseDMXString2 = [allIncomingParseDMX2 objectAtIndex:0];
NSArray* allIncoming = [parseDMXString2 componentsSeparatedByString:@","];
[redSlider setStringValue:[allIncoming objectAtIndex:0]];
[greenSlider setStringValue:[allIncoming objectAtIndex:1]];
[blueSlider setStringValue:[allIncoming objectAtIndex:2]];
[strobeSlider setStringValue:[allIncoming objectAtIndex:3]];
[strobeRandomSlider setStringValue:[allIncoming objectAtIndex:4]];
[self controlChange];
<DMX>255,255,255,255,255</DMX>
時々、エラーで、finalDataは、アプリがクラッシュする以外の何かとして入ってくることがあります。finalDataがそうでない場合、私は<DMX>255,255,255,255,255</DMX>
それを完全に無視して、良いものを待つだけです。
私はこの基準に一致するifステートメントを持つことを考えていました:
<DMX>
文字列には、1つと1つだけが含まれます</DMX>
。- 文字列には正確に4つの"、"が含まれます
- 文字列には、この場合のように少なくとも5つの数字が含まれ、この場合
<DMX>0,0,0,0,0</DMX>
のように15以下の数字が含まれ<DMX>255,255,255,255,255</DMX>
ます。
どうすればこれを達成できますか?