如何从常量字符串中提取纯字符串

Run*_*oop 1 cocoa objective-c

当我在控制台中打印CFString常量的值(例如AddressBook标签)时,输出值为_$!<home>!$_.我如何仅提取纯值,例如家?我们将非常感谢您的帮助.

Pet*_*sey 7

如果你在你的界面显示属性的名称,使用ABCopyLocalizedPropertyOrLabel功能ABPersonCopyLocalizedPropertyName功能,而不是试图从不断的私有实现细节值提取的名称.

如果您正在做这样的事情:

NSLog(@"%@: %@", kABURLsProperty, URLsValue);
Run Code Online (Sandbox Code Playgroud)

试试这个:

//In a header
#define STRING_FROM_NAME(name) @#name

//In the implementation
NSLog(@"%@: %@", STRING_FROM_NAME(kABURLsProperty), URLsValue);
Run Code Online (Sandbox Code Playgroud)

这将打印常量的名称,这更容易识别,而不是常量的私有实现细节值.

(注意,由于这是一个预处理器宏,它不跟随变量.它只是从你传递的任何文本中创建一个字符串作为第一个参数;它不会尝试反向查找字符串.所以,如果你通过了变量名,您将在输出中获得变量的名称.)