如何将 NSRange 存储在 NSMutableArray 或其他容器中?
这就是我想要做的:
NSRange r = NSMakeRange(0,5);
id a = [NSMutableArray a];
[a addObject: r]; // but NSRange is not a NSObject *
对于布尔值,我会使用如下代码:
[a addObject: [NSNumber numberWithBool: YES]];
或对于整数:
[a addObject: [NSNumber numberWithInteger: 3]];
那么 NSRange
的等效项是什么?我真正不想做的是创建我自己的 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 what Apple's already provided?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 NSValue 的
+valueWithRange:
。要检索范围结构,请使用 属性rangeValue< /代码>
。
Use NSValue's
+valueWithRange:
. To retrieve the range structure back, use the propertyrangeValue
.并通过以下方式将其恢复:
and get it back out with:
如果您需要将
NSRange
存储在属性列表中,您还可以使用NSStringFromRange
将NSRange
转换为NSString
代码>函数。然后,您可以使用 NSRangeFromString 函数将该字符串转回范围。If you need to store the
NSRange
in a property list, you can also turn anNSRange
into anNSString
using theNSStringFromRange
function. And then, you can turn that string back into a range using theNSRangeFromString
function.另一种选择可能是将这些范围添加到 NSIndexSet 中,具体取决于您接下来打算如何使用它们。
One other option might be to add those ranges into an
NSIndexSet
, depending on how you intend to use them next.