关于" NSStringCompareOptions"的一些问题swift中的struct文档

时间:2016-03-05 19:42:48

标签: ios iphone swift

我只是坚持使用swift的文档来解释" NSStringCompareOptions"作品。只是一些新问题。

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 }
}

这个结构包含" init"在它,当我调用NSStringCompareOptions() 为什么它允许init方法" rawValue"要省略?

另一个问题是我知道

NSStringCompareOptions() 

的新版本
NSStringCompareOptions.allZero

它意味着"没有选项"

那么下面两者之间的区别是什么?

NSStringCompareOptions()

NSStringCompareOptions(rawValue:0)

非常感谢你帮助我。

2 个答案:

答案 0 :(得分:0)

为了更好地理解,您应该查看OptionSetType的定义,这是NSStringCompareOptions符合的协议。

除基本协议定义外,您还可以找到一些扩展名:

extension OptionSetType where RawValue : BitwiseOperationsType {
    /// Create an empty instance.
    ///
    /// - Equivalent to `[] as Self`
    public convenience init()
    ...
}

OptionSetType符合的SetAlgebraType协议:

extension SetAlgebraType {
    /// Creates the set containing all elements of `sequence`.
    public convenience init<S : SequenceType where S.Generator.Element == Element>(_ sequence: S)
    ...
}

这些方法在协议extension中的事实表明它们具有自动提供的默认实现。

您可以在Using Swift with Cocoa and Objective-C中了解有关选项集的更多信息。

答案 1 :(得分:0)

两者都相同NSStringCompareOptions()NSStringCompareOptions(rawValue:0)

没有贬低。你可以使用其中任何一个。

祝你好运,快乐编码