私は、NSRegularExpression 検索のオプションの選択を提供する Mac OS X アプリケーション用の Cocoa に取り組んでいます。これらのオプションは、次のように列挙型として表されます。
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 を取りません。しかし、これで私が何をしているのかが明確になり、質問が理解できることを願っています!