我只是坚持使用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)
非常感谢你帮助我。
答案 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)
没有贬低。你可以使用其中任何一个。
祝你好运,快乐编码