我想在 CaseIterable 上使用 FileManager.SearchPathDirectory:
extension FileManager.SearchPathDirectory: CaseIterable {}
但我收到错误消息:“类型‘FileManager.SearchPathDirectory’不符合协议‘CaseIterable’”。
我怀疑 RawValue 是导致问题的原因。下一步我尝试用 RawValue 编写一个枚举:
struct My {
enum Number: UInt {
case One = 1
case Two = 2
}
}
extension My.Number: CaseIterable {}
for item in My.Number.allCases {
print(item)
}
好像没问题。在第二次尝试中,我添加了协议存根:
extension FileManager.SearchPathDirectory: CaseIterable {
public typealias AllCases = UInt
public static var allCases: [Self] = [.adminApplicationDirectory,.allApplicationsDirectory,.desktopDirectory]
}
问题依旧。有人知道解决办法吗?