我试图将swift中的多个nsstring比较选项组合在方法string.range(of:)
中使用,但我遇到了一个错误:
Referencing operator function '|' on 'BinaryInteger' requires that 'NSString.CompareOptions' conform to 'BinaryInteger'
这就是我创建选项的方式:
let options = NSString.CompareOptions.diacriticInsensitive | NSString.CompareOptions.caseInsensitive
在objective-c中,这很好,但在swift中有一个错误。有什么想法吗?
NSString.CompareOptions
是Swift中的OptionSet
。您可以使用数组文字语法:
let options: NSString.CompareOptions = [
.diacriticInsensitive,
.caseInsensitive,
]
您应该在文档中阅读更多关于OptionSets的信息:https://developer.apple.com/documentation/swift/optionset
NSHipster也很好地涵盖了它们,并将它们与目标C中使用的原始整数进行了对比:https://nshipster.com/optionset/