Tag: optionsettype

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