user1486548
user1486548

Reputation: 1201

How to pull an integer value from NSRange?

I have an NSRange and need to break a string into two substrings on either side of this NSRange. How do I get an integer value (like the index) out of an NSRange?

Upvotes: 7

Views: 4875

Answers (2)

Clifton Labrum
Clifton Labrum

Reputation: 14068

I know this question is old, but in Swift 4 (and perhaps earlier) there are new upperBound and lowerBound convenience properties on NSRange:

print(myRange) // Range: {13, 4}    
range.lowerBound // 13
range.upperBound // 17

Hopefully that helps someone else.

Upvotes: 0

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726599

NSRange struct consists of two integers - the location and the length.

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

It looks like location and location+length are the two expressions that you are looking for - the ranges for the left and right substring are as follows:

NSRange prefixRange = NSMakeRange(0, myRange.location);
NSUInteger pos =myRange.location+myRange.length;
NSRange suffixRange = NSMakeRange(pos, myString.length - pos);

Upvotes: 4

Related Questions