我只是停留在解释“NSStringCompareOptions”如何工作的 swift 文档中。只是一些新问题。
struct NSStringCompareOptions : OptionSetType {
init(rawValue rawValue: UInt)
static var CaseInsensitiveSearch: NSStringCompareOptions { get }
static var LiteralSearch: NSStringCompareOptions { get }
static var BackwardsSearch: NSStringCompareOptions { get }
static var AnchoredSearch: NSStringCompareOptions { get }
static var NumericSearch: NSStringCompareOptions { get }
static var DiacriticInsensitiveSearch: NSStringCompareOptions { get }
static var WidthInsensitiveSearch: NSStringCompareOptions { get }
static var ForcedOrderingSearch: NSStringCompareOptions { get }
static var RegularExpressionSearch: NSStringCompareOptions { get }
}
当我调用 NSStringCompareOptions() 时,这个结构中包含“init” 为什么它允许省略 init 方法“rawValue”?
还有一个问题是我知道
NSStringCompareOptions()
是新版本吗
NSStringCompareOptions.allZero
意思是“没有选择”
那么下面两者有什么不同呢?
NSStringCompareOptions()
NSStringCompareOptions(rawValue:0)
非常感谢你帮助我。
最佳答案
为了更好地理解,您应该查看 OptionSetType
的定义, NSStringCompareOptions 遵循的协议(protocol)。
除了基本的协议(protocol)定义之外,您还会发现一些扩展:
extension OptionSetType where RawValue : BitwiseOperationsType {
/// Create an empty instance.
///
/// - Equivalent to `[] as Self`
public convenience init()
...
}
还有 SetAlgebraType
OptionSetType 符合的协议(protocol):
extension SetAlgebraType {
/// Creates the set containing all elements of `sequence`.
public convenience init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S)
...
}
这些方法在协议(protocol)扩展
中的事实表明它们具有自动提供的默认实现。
您可以在 Using Swift with Cocoa and Objective-C 中阅读有关选项集的更多信息.
关于ios - 关于swift中 "NSStringCompareOptions"struct document的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818943/