我正在开发一个 Cocoa for Mac OS X 应用程序,它为 NSRegularExpression 搜索提供了一系列选项。这些选项表示为枚举,如下所示:
enum {
NSRegularExpressionCaseInsensitive = 1 << 0,
NSRegularExpressionAllowCommentsAndWhitespace = 1 << 1,
NSRegularExpressionIgnoreMetacharacters = 1 << 2,
NSRegularExpressionDotMatchesLineSeparators = 1 << 3,
NSRegularExpressionAnchorsMatchLines = 1 << 4,
NSRegularExpressionUseUnixLineSeparators = 1 << 5,
NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6
};
typedef NSUInteger NSRegularExpressionOptions;
我想让用户从这些选项中的任何一个中进行选择(这是一系列复选框),然后将结果传递给方法regularExpressionWithPattern:options:error:。我将这些选项作为整数接收,因此用户可能会选择 0 和 5,例如。
我无法弄清楚这里的正确技术是什么。options参数采用按位 OR 运算符的整数,但是如何根据用户在这些复选框中的选择动态构建它,以便将其传递给该方法调用?
这是一个幼稚且不正确的尝试:
for (NSButtonCell * cell in [sender selectedCells]) {
NSNumber * tag = [NSNumber numberWithInteger:[cell tag] - 1];
[self.optionsString stringByAppendingString:[NSString stringWithFormat:@"%@|", [tag stringValue]]];
}
显然,options不需要 NSString。但我希望这能澄清我在做什么,以便您理解这个问题!