文字列が const 構造体にあるかどうかを確認したい。私がそれを行う方法は次のようなものです:
私の MyClass.h で:
extern const struct MyAttributes {
__unsafe_unretained NSString *attribute1;
__unsafe_unretained NSString *attribute2;
__unsafe_unretained NSString *attribute3;
__unsafe_unretained NSString *attribute4;
__unsafe_unretained NSString *attribute5;
} MyAttributes;
次に、私の MyClass.m には次のものがあります。
const struct MyAttributes MyAttributes = {
.attribute1 = @"attribute1",
.attribute2 = @"attribute2",
.attribute3 = @"attribute3",
.attribute4 = @"attribute4",
.attribute5 = @"attribute5"
};
...
- (void)someMethod
{
BOOL test1 = [self check:@"test"];
BOOL test2 = [self check:@"attribute1"];
}
- (BOOL)check:(NSString *)string
{
return [string isEqualToString:MyAttributes.attribute1] ||
[string isEqualToString:MyAttributes.attribute2] ||
[string isEqualToString:MyAttributes.attribute3] ||
[string isEqualToString:MyAttributes.attribute4] ||
[string isEqualToString:MyAttributes.attribute5];
}
まあ、これはうまくいきます。しかし、- (void)check
更新する場合に更新するMyAttributes
必要がないように実装するより良い方法はあり- (void)check
ますか?