web-dev-qa-db-ja.com

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の独自のサブクラスを作成することです。確かに、Appleがすでに提供している方法には方法がありますか?

58
Steven Fisher

NSValueの+valueWithRange: を使用します。範囲構造を取得するには、 property rangeValue を使用します。

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

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

そしてそれを元に戻す:

NSRange r = [rangeObject rangeValue];
12
mipadi

プロパティリストにNSRangeを格納する必要がある場合は、NSRange関数を使用してNSStringNSStringFromRangeに変換することもできます。次に、NSRangeFromString関数を使用して、その文字列を範囲に戻すことができます。

5

もう1つのオプションは、次にそれらをどのように使用するかによって、NSIndexSetにこれらの範囲を追加することです。

4
Mike Abdullah