我的代码中有这个方法:
- (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];
有时,finalData 错误地以其他方式出现,而不是<DMX>255,255,255,255,255</DMX>
应用程序崩溃时。当 finalData 不是<DMX>255,255,255,255,255</DMX>
我只想让它完全忽略它并等待一个好的。
我正在考虑使用符合此条件的 if 语句:
- 字符串仅包含 ONE
<DMX>
且仅包含 ONE</DMX>
。 - 字符串正好包含 4 个“,”
- 字符串包含至少 5 个数字 - 在本例中
<DMX>0,0,0,0,0</DMX>
,并且不超过 15 个数字 - 在本例<DMX>255,255,255,255,255</DMX>
中。
我怎样才能做到这一点?