如何将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
,具体取决于您打算如何使用它们。