如何以可读的forms显示OptionSet值?
Swift有OptionSettypes,它基本上将设置操作添加到C-Style位标志。 苹果在他们的框架中非常广泛地使用它们。 示例包括animate(withDuration:delay:options:animations:completion:)
的选项参数animate(withDuration:delay:options:animations:completion:)
。
另一方面,它可以让你使用干净的代码,如:
options: [.allowAnimatedContent, .curveEaseIn]
然而,也有一个缺点。
如果我想显示一个OptionSet
的指定值,似乎没有一个干净的方法来做到这一点:
let options: UIViewAnimationOptions = [.allowAnimatedContent, .curveEaseIn] print("options = " + String(describing: options))
显示非常无益的消息:
options = UIViewAnimationOptions(rawValue:65664)
这些位字段的文档将常量表示为两个幂的值:
flag0 = Flags(rawValue: 1 << 0)
但是我的例子OptionSet, UIViewAnimationOptions
的文档并没有告诉你任何关于这些标志的数字值,从十进制数中找出位并不是直截了当的。
题:
有没有一种干净的方式来映射一个选项集到选定的值?
我想要的输出会是这样的:
options = UIViewAnimationOptions([。allowAnimatedContent,.curveEaseIn])
但我想不到一个没有一堆乱七八糟的代码,这将需要我维护每个标志的显示名称表的方式。
(我有兴趣做这两个系统框架和我自己的代码中创build的自定义OptionSets。)
枚举让你有一个名字和一个枚举的原始值,但是不支持你使用OptionSets获得的设置函数。