2017-08-05 4 views
0

Apple's Swift documentation for String.UTF16View dit:Quel est le but de NSRange.toRange()?

Utilisez la méthode toRange de type NSRange pour convertir [un NSRange] par exemple à une gamme facultative de Int valeurs.

Quel est le point de la méthode NSRange du type toRange? Et, pourquoi reviendrait-il jamais nil?

Pourquoi ne pas simplement utiliser le NSRange « s location pour obtenir lowerBound et NSMaxRange(_:) pour obtenir upperBound?

Par exemple, étant donné

let nsrange = NSRange(location: 3, length: 12) 

au lieu de

let r = nsrange.toRange() 

pourquoi pas seulement

let lowerBound = nsrange.location 
let upperBound = NSMaxRange(nsrange) 

Répondre

1

Regardez the Swift source code for the NSRange type’s toRange method implementation.

public func toRange() -> Range<Int>? { 
    if location == NSNotFound { return nil } 
    return location..<(location+length) 
} 

Comme vous le soupçonnez, la méthode utilise pour obtenir lowerBound et location+length de location le NSRange, ce qui équivaut à NSMaxRange(_:), pour obtenir upperBound. Il renvoie nil si le NSRangelocation est NSNotFound.

Remarque: À partir de Swift 4, cette méthode a été abandonnée et a été renommée Range.init(_:).