Reputation: 3564
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
Upvotes: 10
Views: 3104
Reputation: 4336
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"
}
Upvotes: 3