59

这是我想要做的:

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

那么 a 的等价物是NSRange什么?我真正不想做的是创建自己的子类NSObject来完成此任务。苹果已经提供的东西肯定有办法吗?

4

4 回答 4

141

使用 NSValue 的+valueWithRange:. 要检索范围结构,请使用属性rangeValue

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

NSRange r = a[4].rangeValue;
于 2010-10-22T17:05:41.527 回答
13
[NSValue valueWithRange:r];

并通过以下方式将其取回:

NSRange r = [rangeObject rangeValue];
于 2010-10-22T17:05:35.603 回答
5

如果您需要将 存储NSRange在属性列表中,您还可以使用该函数将 anNSRange转换为 an 。然后,您可以使用该函数将该字符串转换回一个范围。NSStringNSStringFromRangeNSRangeFromString

于 2010-10-22T17:06:28.367 回答
4

另一种选择可能是将这些范围添加到 中NSIndexSet,具体取决于您接下来打算如何使用它们。

于 2010-10-22T23:25:41.757 回答