如何将"SEL"和"id"转换为NSString?

Man*_*nni 36 objective-c selector nsstring ios

id parent;
SEL selector;

// lot's of code...

if ([parent respondsToSelector:selector]) {

}
else {
    // This doesn't work:
    NSString *errorMessage = [NSString stringWithFormat:@"%@ in class %@ doesn't exist!", selector, parent];
}
Run Code Online (Sandbox Code Playgroud)

如何将"SEL"和"id"转换为字符串?

Bol*_*ock 85

调用NSStringFromSelector()传递选择器作为其参数以获取选择器字符串,并[parent class]用于parent对象的类:

NSString *errorMessage = [NSString stringWithFormat:@"%@ in class %@ doesn't exist!",
    NSStringFromSelector(selector), 
    [parent class]];
Run Code Online (Sandbox Code Playgroud)

  • 相反的方法是:SEL aSelector = NSSelectorFromString(@"tapMeAction:"); (14认同)
  • 注意 - `NSStringFromSelector` 返回的字符串格式只是选择器,例如 `@"setTitle:"`。即它没有`@selector(~)` 包装等。 (2认同)