我试图弄清楚 OptionSetType 协议(protocol),但我有一些基本问题。
1)options是Array类型还是Set类型?
2) 我可以使用 for...in 循环或 for 循环访问选项的每个元素吗
提前致谢
let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsSubdirectoryDescendants]
最佳答案
1) 没有
2) 没有
查看这个“不言自明”的片段
import Foundation
let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants, .SkipsSubdirectoryDescendants]
let res = options.rawValue == NSDirectoryEnumerationOptions.SkipsHiddenFiles.rawValue | NSDirectoryEnumerationOptions.SkipsPackageDescendants.rawValue | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants.rawValue
print(res) // true
dump(options)
/*
▿ __C.NSDirectoryEnumerationOptions
- rawValue: 7
*/
你可以用其他方式初始化它,得到相同的结果
let options2 = NSDirectoryEnumerationOptions(rawValue: NSDirectoryEnumerationOptions.SkipsHiddenFiles.rawValue | NSDirectoryEnumerationOptions.SkipsPackageDescendants.rawValue | NSDirectoryEnumerationOptions.SkipsSubdirectoryDescendants.rawValue)
options2 == options // true
关于swift - 有关 OptionSetType 的基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35861478/