1
29
由于枚举是整数,因此可以将枚举包装为nsnumber。在向映射添加/检索内容时,将枚举传递给nsnumber构造函数… 假设你有一个枚举…
你可以在这样的nsdictionary中使用它…
|
2
28
对于voidpointer的建议,最好使用
这不会在这里增加太多内容,但会提供一般的“我想在集合类中使用非objc类型的<名称”技术。 注意,使用现代编译器,您可以分辨 enums to use a fixed underlying type . 这意味着您可以控制枚举使用的存储,但是由于上述解决方案是通用的,因此即使您知道这一点,它仍然适用。 |
3
9
进一步扩展了格雷厄姆·李的建议… 你可以用目标-C category 为了向nsmutabledictionary添加方法,该方法允许您使用非nsObject类型的键添加值。这使您的代码不受包装/展开语法的约束。 再次,假设
首先,我们在nsvalue中添加了一个令人信服的构造函数:
接下来,我们将向nsmutabledictionary添加“enum etest”支持
因此,可以将原始示例转换为
根据您使用枚举访问字典的程度,这可能会大大降低代码的可读性。 |
4
7
这是一种轻描淡写的说法;枚举不“符合”任何事物,因为它们不是对象;它们是可以与整数互换的原始C值。这就是它们不能用作钥匙的真正原因。关键和价值观
另一个选项是,如果枚举是从0到某个数字连续的(即,您没有手动设置任何值),则可以使用
|
5
2
我也喜欢类别方法,并且可能在我的案例中也会实现这一点。有了新的文字/拳击表达,不管它叫什么,你会用@(foo)来照顾拳击吗? 我认为,如果是这样的话,当使用枚举作为键时,通过显式地对它进行装箱,它将非常透明地工作。 |
Noah H · 如何通过终端或Swift禁用三指轻拍手势? 6 年前 |
Dmitry Serov · 货币数字格式-数字为整数时省略分数部分 6 年前 |
Duny · ObjC日期始终返回2017年12月25日 6 年前 |
Jan Kaiser · NSButton不调用其操作 6 年前 |