开发者

How do I store an NSRange in a NSMutableArray or other container?

开发者 https://www.devze.com 2023-01-21 18:28 出处:网络
Here\'s what I want to do: NSRange r = NSMakeRange(0,5); id a = [NSMutableArray a]; [a addObject: r]; // but NSRange is not a NSObject *

Here's what I want to do:

NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *

With a boolean, I'd use code like this:

[a addObject: [NSNumber numberWithBool: YES]];

or with an integer:

[a addObject: [NSNumber numberWithInteger: 3]];

So what's the equivalent with a NSRange? What I don't really want to do is create my own subclass of NSObject to accomplish this. Surely there's a way with wha开发者_运维百科t Apple's already provided?


Use NSValue's +valueWithRange:. To retrieve the range structure back, use the property rangeValue.

[a addObject:[NSValue valueWithRange:r]];
...

NSRange r = a[4].rangeValue;


[NSValue valueWithRange:r];

and get it back out with:

NSRange r = [rangeObject rangeValue];


If you need to store the NSRange in a property list, you can also turn an NSRange into an NSString using the NSStringFromRange function. And then, you can turn that string back into a range using the NSRangeFromString function.


One other option might be to add those ranges into an NSIndexSet, depending on how you intend to use them next.

0

精彩评论

暂无评论...
验证码 换一张
取 消