Ruby 符号的 Objective-C 等价物
Posted
技术标签:
【中文标题】Ruby 符号的 Objective-C 等价物【英文标题】:Objective-C Equivalent of Ruby Symbols 【发布时间】:2012-04-02 17:19:20 【问题描述】:在 Ruby 中,我们有符号可用于哈希键。我正在尝试将 Ruby 库移植到 Objective-C,并且该库中有一个使用符号作为键的哈希。 Objective-C 是否有类似的解决方案?还是我应该使用NSString
s?
【问题讨论】:
Objective-C 是 C 的超集,因此您可以使用#define
常量来实现类似的结果。
在所有符号上调用一个 to_s,并且您可以将字符串用作您的键(符号是可变字符串)
我说的是 Objective-C 中的符号,而不是 Ruby。
【参考方案1】:
我见过这样的声明
extern NSString *const NSKeyValueChangeNewKey = @"NSKeyValueChangeNewKey";
这样你就可以把它当作钥匙使用:
[dict objectForKey:NSKeyValueChangeNewKey];
有关更详细的解释,请参阅Constants in Objective-C。
【讨论】:
搜索NSKeyValueChangeNewKey
谢谢,刚刚找到一个很好的答案来解释它。
郑重声明:请不要在常量前面加上“NS”——这是苹果的前缀。
@Chuck:对不起,我试图从 Apple 源代码中进行伪引用。我将更改为 hmt 的示例以更清楚一点。【参考方案2】:
Objective-C 中的NSDictionary
键通常是NSString
s。大概就是这样。
您不必担心 Ruby 字符串文字与符号的对比;只需使用键的字符串值创建一个 NSString
或根据需要使用文字 @"my key name"
字符串。
【讨论】:
@benalpert 的答案是更好的答案。符号的使用在 Ruby 中是惯用的,因为它们是不可变的并且只被创建一次。在 Objective-C 中,指向字符串的 const 指针是您想要使用的等价物。以上是关于Ruby 符号的 Objective-C 等价物的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C 的 NSDictionary 的 Java 等价物是啥?
Objective-C/Cocoa 中 Java 的 Thread.sleep() 等价物是啥?