简体   繁体   中英

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

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 what 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];

并通过以下方式恢复原状:

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.

另一个选项可能是将这些范围添加到NSIndexSet ,具体取决于您打算下次使用它们的方式。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM