Did someone can give me a hint which property of a Range is the equivalent property to the location property of an NSRange.
Especially I'm interested how I would migrate the following line of code from Swift 2.3 -> Swift 3.0
if myRange.location != NSNotFound { ... }
myRange is still a Range property and so the compiler tells me correct: Value of Type Range has no member location
Is it enough to check the empty property?
if !myRange.isEmpty { ... }
Thanks in advance
A structure used to describe a portion of a series, such as characters in a string or objects in an array.
Ranges with Strings< range operators are a shorthand way of creating ranges. For example: let myRange = 1..<3. let myRange = CountableRange<Int>(uncheckedBounds: (lower: 1, upper: 3)) // 1..<3.
Ranges in Swift allow us to select parts of Strings, collections, and other types. They're the Swift variant of NSRange which we know from Objective-C although they're not exactly the same in usage, as I'll explain in this blog post. Ranges allow us to write elegant Swift code by making use of the range operator.
Like the comments say, instead of returning NSNotFound you will get a nil range.
To answer your question though .location has been replaced with .lowerBound and .upperBound.
let s = "The yellow dog is nice"
if let range = s.range(of: "dog")
{
print(s[range.lowerBound...]) //prints "dog is nice"
print(s[range.upperBound...]) //prints " is nice"
print(s[range.lowerBound..<range.upperBound]) //prints "dog"
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With