0

给定一个具有以下属性的类:

@property(nonatomic,retain) NSString* un_conventional;

我尝试像这样形成一个选择器:

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

PS:理所当然的认为这key是一个有值的变量un_conventional

问题似乎是这与正确的设置方法不匹配,因为capitalizedString原因setterMethod被命名setUn_Conventional而不是setUn_conventional......字母“c”也大写!

那么有没有人对如何为这种情况动态准备选择器有任何建议,以便它产生一个命名的选择器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 回答