0

次のようなプロパティを持つクラスがあるとします。

@property(nonatomic,retain) NSString* un_conventional;

私は次のようにセレクターを形成しようとしました:

SEL setterMethod =
  NSSelectorFromString(
    [NSString stringWithFormat:@"set%@", [key capitalizedString]]
  );
if ([customer respondsToSelector:setterMethod]) {
    //do something
}

keyPS:値を持つ変数であることを当然のことと考えてくださいun_conventional

capitalizedString問題は、これが正しい setter メソッドと一致しないことのようです。名前の代わりにsetterMethod名前が付けられるためです... 文字 "c" も大文字です!setUn_ConventionalsetUn_conventional

setUn_conventionalそれで、名前付きのセレクターになり、respondsToSelector を介して一致するために使用できるように、そのようなシナリオのためにセレクターを動的に準備する方法について誰か提案がありますか?

4

1 に答える 1

1
SEL setterMethod = NSSelectorFromString(
    [NSString stringWithFormat:
          @"set%@%@",
          [[key substringToIndex:1]uppercaseString],
          [key substringFromIndex:1]
    ]
);

キーが少なくとも 1 文字の長さであることを保証できれば、うまくいきます。

于 2013-10-05T14:39:22.930 に答える