私の Mac アプリは、スクリプトを介して別のアプリから 2 つの文字列値を取得します。特定の条件下で、送信者は「0-1」を提供します。これを検出し、それを表示するテキスト ボックスを空白にする必要があります。次のコードは、2 番目の文字列のコードのみを示しており、デバッガーでは機能しますが、デバッガーの外で実行すると機能しません。
- (void)controlTextDidChange:(NSNotification *)notification
{
// there was a change in a text control
int tmpInt2 = 0;
NSMutableString *tmp2 = [NSMutableString stringWithString:[inputTextField2 stringValue]];
//NSLog(@"text box changed. value: %i", val);
if ([tmp2 length] > 3)
{
tmp2 = [NSMutableString stringWithString:[tmp2 substringToIndex:[tmp2 length] - 1]];
[inputTextField2 setStringValue:tmp2];
}
if ([tmp2 length] == 3)
{
tmpInt2 = [tmp2 intValue];
if (tmpInt2 > 360 || tmpInt2 < 0 || [tmp2 isEqualToString:@"0-1"])
{
//[self showAlert:@"Heading must be between 000 and 360"];
[inputTextField2 setStringValue:@""];
//[inputTextField2 setBackgroundColor:[NSColor yellowColor]];
[tmp2 setString:@""];
}
}
if ([[inputTextField2 stringValue] rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]].location != NSNotFound)
{
NSLog(@"This is not a positive integer");
//NSMutableString *strippedString = [NSMutableString stringWithCapacity:tmp.length];
[inputTextField2 setStringValue:@""];
//[[inputTextField2 cell] setBackgroundColor:[NSColor yellowColor]];
[tmp2 setString:@""];
}
/*
if ([tmp2 isEqualToString:@"0-1"])
{
[inputTextField2 setStringValue:@""];
[tmp2 setString:@""];
}
*/
if ([tmp2 rangeOfString:@"-"].location == NSNotFound) {
NSLog(@"string does not contain 0-1");
} else {
NSLog(@"string contains 0-1!");
[inputTextField2 setStringValue:@""];
[tmp2 setString:@""];
}
}