如何将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什么呢? 我不想要做的是创build我自己的NSObject的子类来完成这一点。 苹果公司已经提供了一种方法吗?

使用NSValue的+valueWithRange: :。 要恢复范围结构,请使用属性rangeValue

 [a addObject:[NSValue valueWithRange:r]]; ... NSRange r = a[4].rangeValue; 
 [NSValue valueWithRange:r]; 

并用以下方法将其恢复:

 NSRange r = [rangeObject rangeValue]; 

如果您需要将NSRange存储在属性列表中,则还可以使用NSStringFromRange函数将NSRange转换为NSString 。 然后,您可以使用NSRangeFromString函数将该string转换回一个范围。

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