如何以可读的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获得的设置函数。