- クラスメソッド
- インスタンスメソッド
- - addObserver:forKeyPath:options:context:
- - addObserver:toObjectsAtIndexes:forKeyPath:options:context:
- - arrayByAddingObject:
- - arrayByAddingObjectsFromArray:
- - componentsJoinedByString:
- - containsObject:
- - count
- - description
- - descriptionWithLocale:
- - descriptionWithLocale:indent:
- - enumerateObjectsAtIndexes:options:usingBlock:
- - enumerateObjectsUsingBlock:
- - enumerateObjectsWithOptions:usingBlock:
- - filteredArrayUsingPredicate:
- - firstObject
- - firstObjectCommonWithArray:
- - getObjects:range:
- - indexOfObject:
- - indexOfObject:inRange:
- - indexOfObject:inSortedRange:options:usingComparator:
- - indexOfObjectAtIndexes:options:passingTest:
- - indexOfObjectIdenticalTo:
- - indexOfObjectIdenticalTo:inRange:
- - indexOfObjectPassingTest:
- - indexOfObjectWithOptions:passingTest:
- - indexesOfObjectsAtIndexes:options:passingTest:
- - indexesOfObjectsPassingTest:
- - indexesOfObjectsWithOptions:passingTest:
- - init
- - initWithArray:
- - initWithArray:copyItems:
- - initWithContentsOfFile:
- - initWithContentsOfURL:
- - initWithObjects:
- - initWithObjects:count:
- - isEqualToArray:
- - lastObject
- - makeObjectsPerformSelector:
- - makeObjectsPerformSelector:withObject:
- - objectAtIndex:
- - objectAtIndexedSubscript:
- - objectEnumerator
- - objectsAtIndexes:
- - pathsMatchingExtensions:
- - removeObserver:forKeyPath:
- - removeObserver:forKeyPath:context:
- - removeObserver:fromObjectsAtIndexes:forKeyPath:
- - removeObserver:fromObjectsAtIndexes:forKeyPath:context:
- - reverseObjectEnumerator
- - setValue:forKey:
- - sortedArrayHint
- - sortedArrayUsingDescriptors:
- - sortedArrayUsingFunction:context:
- - sortedArrayUsingFunction:context:hint:
- - sortedArrayUsingSelector:
- - sortedArrayWithOptions:usingComparator:
- - subarrayWithRange:
- - valueForKey:
- - writeToFile:atomically:
- - writeToURL:atomically:
クラスメソッド
init
新たにアロケートされた配列を初期化します。
- (instancetype)init
Return Value
配列。
Discussion
この方法で不変な配列*を初期化したら、変更は出来ません。(*immutable array)
このメソッドは指定イニシャライザです。
Availability
Available in OS X v10.0 and later.
See Also
- initWithObjects:
Declared In
NSArray.h
initWithArray:
あたえられた配列に入っているオブジェクトを配置した、新しくアロケートされた配列を初期化します。
- (instancetype)initWithArray:(NSArray *)anArray
Parameters
anArray
配列。
Return Value
anArrayにあるオブジェクトを入れて初期化した配列。返されるオブジェクトは、レシーバとは異なるべきでしょう。
Discussion
この方法で不変な配列*が初期化さたら、変更は出来ません。(*immutable array)
Availability
Available in OS X v10.0 and later.
See Also
+ arrayWithObject:
- initWithObjects:
Declared In
NSArray.h
initWithArray:copyItems:
arrayを配列への元のデータオブジェクトとして用いた、新しくアロケートされた配列を初期化します。
- (instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag
Parameters
array
新しい配列を初期化するためのオブジェクトが入った配列。
flag
YESなら、オブジェクトのコピーを生成するために、arrayにあるどのオブジェクトもcopyWithZoneメッセージを受け取りますーオブジェクトはNSCopyingプロトコルに準拠していなくてはなりません。管理されたメモリ環境おいては、copyWithZoneメッセージはオブジェクトが受け取るretainメッセージの代わりになります。その後に、返される配列へオブジェクトのコピーが加えられます。
NOなら、管理されたメモリ環境においては、配列にあるオブジェクトどれもが単にretainメッセージを受け取ってから、返される配列へ加えられます。
Return Value
配列にあるオブジェクトを、flagがYESならオブジェクトのコピーを、入れて初期化された配列。返されるオブジェクトは、基となったレシーバとは異なるべきでしょう。
Discussion
不変な配列がこの方法で初期化さたら、変更は出来ません。
任意の深さを持つコレクションの場合は、flagパラメタにYESを渡すことで、表面の下にある第1レベルの不変コピーを行います。NOを渡せば、第1レベルの可変性は影響を受けません。どちらの場合でも、深いレベルでの可変性は影響を受けません。
Availability
Available in OS X v10.2 and later.
See Also
- init
- initWithArray:copyItems:
+ arrayWithObject:
- initWithObjects:
Declared In
NSArray.h
initWithContentsOfFile:
あたえられたパスで指定されたファイルの内容が入った、新しくアロケートした配列を返します。
- (id)initWithContentsOfFile:(NSString *)aPath
Parameters
aPath
- writeToFile:atomically:メソッドで作られた配列表現が入ったファイルへのパス。
Return Value
aPathで指定されたファイルの内容が入った、新しくアロケートした配列。ファイルが開けないか、ファイルの内容を配列へパースできないなら、nil。返されるオブジェクトは、レシーバとは異なるべきでしょう。
Discussion
aPathで指定されたファイルの内容にある配列表現は、プロパティリストのみが入っていなければなりません(NSString, NSData, NSArray, または NSDictionaryオブジェクト)。この配列に含まれるオブジェクトは、配列が可変であっても、不変です。
Availability
Available in OS X v10.0 and later.
See Also
+ arrayWithContentsOfFile:
- writeToFile:atomically:
Declared In
NSArray.h
initWithContentsOfURL:
あたえられたURLで指定された内容が入った、新しくアロケートした配列を返します。
- (id)initWithContentsOfURL:(NSURL *)aURL
Parameters
aURL
配列の文字列表現が入ったファイルの場所。これは- writeToURL:atomically:メソッドで作ります。
Return Value
aURLで指定された内容で初期化された配列。aURLを開けないか、aURLの内容を配列へパースできない場合は、nilが返されます。返されるオブジェクトは、レシーバとは異なるべきでしょう。
Discussion
aURLで指定された場所にある配列表現は、プロパティーリストのみが入っていなければなりません(NSString, NSData, NSArray, または NSDictionary オブジェクト)。配列が可変であっても、この配列に含まれるオブジェクトは不変です。
Availability
Available in OS X v10.0 and later.
See Also
+ arrayWithContentsOfURL:
- writeToURL:atomically:
Declared In
NSArray.h
initWithObjects:
引数リストにあるオブジェクトを入れた、新しくアロケートした配列を初期化します。
- (instancetype)initWithObjects:(id)firstObj, ...
Parameters
firstObj, ...
オブジェクトのコンマ区切りリスト。nilで終わります。
Return Value
引数リストにあるオブジェクトを入れて初期化した配列。返されるオブジェクトは、レシーバとは異なるべきでしょう。
Discussion
不変な配列がこの方法で初期化されたら、変更は出来ません。
このメソッドは、指定イニシャライザです。
Availability
Available in OS X v10.0 and later.
See Also
- init
- initWithObjects:count:
+ arrayWithObjects:
- initWithArray::
Declared In
NSArray.h
initWithObjects:count:
あたえられたC配列から、あたえられた数のオブジェクトが入った、新しくアロケートされた配列を初期化します。
- (instancetype)initWithObjects:(const id NSIndexSet)objects count:(NSUInteger)count
Parameters
objects
オブジェクトのC配列。
count
C配列のオブジェクトから新しい配列へ代入するオブジェクトの数。この数は新しい配列のcountになります。負の数であったり、objects'の要素数を超える値ではいけません。
Return Value
objectsから、先頭からcount個のオブジェクトが入った、新しくアロケートされた配列。返されるオブジェクトは、レシーバとは異なるべきでしょう。
Discussion
新しい配列へ加えられた要素は、objectsで入っていたのと同じ順番に並びます。countのインデックスの要素は含まれていません。
不変な配列がこの方法で初期化さたら、変更は出来ません。
このメソッドは、指定イニシャライザです。
Availability
Available in OS X v10.0 and later.
See Also
- initWithObjects:
+ arrayWithObjects:
- initWithArray::
Declared In
NSArray.h
isEqualToArray:
レシーバ配列と他の配列を比較します。
- (BOOL)isEqualToArray:(NSArray *)otherArray
Parameters
otherArray
配列。
Return Value
otherArrayの内容がレシーバ配列の内容と同じならYES、でなければNO。
Discussion
ふたつの配列どちらも同じ数のオブジェクトを持ち、同じインデックスにあるオブジェクトがisEqual:テストを満たしたら、2つの配列は同じ内容を持つとします。
Availability
Available in OS X v10.0 and later.
Declared In
NSArray.h
lastObject
配列にある末尾のオブジェクトを返します。
- (id)lastObject
Return Value
配列のある末尾のオブジェクト。配列が空なら、nilを返します。
Availability
Available in OS X v10.0 and later.
See Also
- firstObject
removeLastObject (NSMutableArray)
Related Sample Code
AnimatedTableView
AnimatingViews
ImageBackground
TableViewPlayground
TextEdit
Declared In
NSArray.h
makeObjectsPerformSelector:
あたえられたセレクタで識別したメッセージを、配列にあるオブジェクト全てへ送ります。送信は、先頭のオブジェクトから開始して、末尾のオブジェクトまで順々に行われます。
- (void)makeObjectsPerformSelector:(SEL)aSelector
Parameters
aSelector
配列にあるオブジェクトへ送るメッセージを識別するセレクタ。このメソッドは引数も取るものであってはならず、レシーバの配列を変更するような副効果もあたえてはいけません。
Discussion
aSelectorがNULLなら、このメソッドはNSInvalidArgumentExceptionを発生させます。
Availability
Available in OS X v10.0 and later.
See Also
- makeObjectsPerformSelector:
Related Sample Code
Dicey
ImageBackground
Sketch
Sketch+Accessibility
TextEdit
Declared In
NSArray.h
makeObjectsPerformSelector:withObject:
配列にある全てのオブジェクトへaSelectorを送ります。送信は、先頭のオブジェクトから開始して、末尾のオブジェクトまで順々に行われます。
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject
Parameters
aSelector
配列にあるオブジェクトへ送るメッセージを識別するセレクタ。このメソッドはid型の引数を1つ取らなくてはならず、レシーバの配列を変更するような副効果もあたえてはいけません。
anObject
aSelectorメソッドの呼び出しで、引数として渡されるオブジェクト。
Discussion
aSelectorがNULLなら、このメソッドはNSInvalidArgumentExceptionを発生させます。
Availability
Available in OS X v10.0 and later.
See Also
- makeObjectsPerformSelector:
Related Sample Code
ImageBackground
iSpend
QuickLookSketch
Sketch
Sketch+Accessibility
Declared In
NSArray.h
objectAtIndex:
指定されたインデックスに位置するオブジェクトを返します。
- (id)objectAtIndex:(NSUInteger)index
Parameters
index
配列の境界内にあるインデックス。
Return Value
indexに位置するオブジェクト。
Discussion
indexが配列の末尾を超えていたら(つまり、indexが- count'から返される値以上)、NSRangeExceptionが発生します。
Availability
Available in OS X v10.0 and later.
See Also
- count
- objectsAtIndexes:
- objectAtIndexedSubscript:
Related Sample Code
QTCoreVideo301
QuickLookSketch
Sketch
Sketch+Accessibility
SourceView
Declared In
NSArray.h
objectAtIndexedSubscript:
指定したインデックスにあるオブジェクトを返します。
- (id)objectAtIndexedSubscript:(NSUInteger)idx
Parameters
idx
配列の境界内にあるインデックス。
Return Value
idxにあるオブジェクト。
Discussion
indexが配列の末尾を超えていたら(つまり、indexがcountから返される値以上なら)、NSRangeExceptionが発生します。
このメソッドはobjectAtIndex:と等価です。
Availability
Available in OS X v10.8 and later.
See Also
- count
- objectsAtIndexes:
Declared In
NSArray.h
objectEnumerator
配列にある全てのオブジェクトへアクセスが可能となる列挙オブジェクトを返します。
- (NSEnumerator *)objectEnumerator
Return Value
配列にある全てのオブジェクトへアクセスが可能となる列挙オブジェクト。列挙は1番低いインデックスの要素から昇順で行います。
Discussion
配列にある全てのオブジェクトへアクセスが可能となる列挙オブジェクトを返します。列挙はインデックス0の要素から昇順に行います。つまり、
NSEnumerator *enumerator = [myArray objectEnumerator; id anObject;
while (anObject = [enumerator nextObject) {
/* code to act on each element as it is returned */
}
Special Considerations
NSArrayの可変サブクラスでこのメソッドを使うなら、列挙中にその配列を変更してはいけません。
高速列挙プロトコルを使う方が、より効果的です(NSFastEnumerationを参照してください)。高速列挙は、OS X v10.5以降、 iOS 2.0以降で使用可能です。
Availability
Available in OS X v10.0 and later.
See Also
- reverseObjectEnumerator
nextObject (NSEnumerator)
Related Sample Code
CocoaSlides
ImageMapExample
QTRecorder
SimpleScriptingPlugin
TextEdit
Declared In
NSArray.h
objectsAtIndexes:
あたえられたインデックスセットで指定したインデックスに存在している複数のオブジェクトが入った配列を返します。
- (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes
indexes
抽出を行うインデックスセット。
Return Value
indexesで指定したインデックス*に存在している、複数のオブジェクトが入った配列。(*indexes, インデックスの複数形)
Discussion
返されるオブジェクトは、indexesにあるインデックスの昇順で配されています。ですから、より高いindexesにある配列オブジェクトは、低いindexesのオブジェクトより後になります。
indexesが配列の境界を越えているか、indexesがnilなら、NSRangeExceptionが発生します。
Availability
Available in OS X v10.4 and later.
See Also
- count
- objectAtIndex:
Related Sample Code
MyMediaPlayList
Sketch+Accessibility
Declared In
NSArray.h
pathsMatchingExtensions:
あたえられた配列にあるファイル拡張子を持つ、レシーバ配列のパス要素全てが入った配列を返します。
- (NSArray *)pathsMatchingExtensions:(NSArray *)filterTypes
Parameters
filterTypes
ファイル拡張子が入ったNSStringの配列。拡張子はドット文字(“.”)を含むべきではありません。
Return Value
filterTypes配列にあるファイル拡張子を持つ、レシーバ配列のパス要素全てが入った配列。
Availability
Available in OS X v10.0 and later.
Declared In
NSPathUtilities.h
removeObserver:forKeyPath:
例外を発生させます。
- (void)removeObserver:([NSObject *)observer forKeyPath:(NSString *)keyPath
Parameters
observer
オブザーバとして取り除くオブジェクト。
keyPath
キーパス。配列に対して相対値。KVO変化通知を受け取ると登録してあるオブジェクトへの値。この値がnilではいけません。
Special Considerations
NSArrayオブジェクトを観察対象には出来ないので、このメソッドをNSArrayオブジェクトで呼び出すと、例外が発生します。配列を観察する代わりに、配列は関連するオブジェクトのコレクションと見なして、そこにある多対多関係を観察します。
Availability
Available in OS X v10.4 and later.
See Also
- addObserver:toObjectsAtIndexes:forKeyPath:options:context:
- removeObserver:fromObjectsAtIndexes:forKeyPath:
Declared In
NSKeyValueObserving.h
removeObserver:forKeyPath:context:
例外を発生させます。
- (void)removeObserver:([NSObject *)observer forKeyPath:(NSString *)keyPath context:(void *)context
Parameters
observer
オブザーバとして取り除くオブジェクト。
keyPath
キーパス。配列に対して相対値。KVO変化通知を受け取ると登録してあるブジェクトへの値。この値がnilではいけません。
context
通知へ渡すコンテキスト。
Special Considerations
NSArrayオブジェクトは観察対象には出来ないので、このメソッドをNSArrayオブジェクトで呼び出すと、例外が発生します。配列を観察する代わりに、配列は関連するオブジェクトのコレクションと見なして、そこにある多対多関係を観察します。
Availability
Available in OS X v10.7 and later.
See Also
- addObserver:forKeyPath:options:context:
- removeObserver:forKeyPath:
Declared In
NSKeyValueObserving.h
removeObserver:fromObjectsAtIndexes:forKeyPath:
indexesにある配列オブジェクトから相対位置にある、指定したkeyPathと関連するバリューオブザーバ通知全てから、anObserverを取り除く。
- (void)removeObserver:([NSObject *)anObserver fromObjectsAtIndexes:(NSIndexSet *)indexes forKeyPath:(NSString *)keyPath
Parameters
anObserver
オブザーバ。
indexes
インデックスセット。
keyPath
観測する配列との相対位置を表す、キーパス。
Discussion
これは単なるコンビニエンスメソッドではありません。このメソッドは、[[removeObserver:forKeyPath:>]]を繰り返して呼び出すよりかなり高速になる可能性があります。
Availability
Available in OS X v10.3 and later.
See Also
- addObserver:toObjectsAtIndexes:forKeyPath:options:context:
Related Sample Code
iSpend
Sketch
Sketch+Accessibility
Declared In
NSKeyValueObserving.h
removeObserver:fromObjectsAtIndexes:forKeyPath:context:
例外を発生させます。
- (void)removeObserver:([NSObject *)observer fromObjectsAtIndexes:(NSIndexSet *)indexes forKeyPath:(NSString *)keyPath context:(void *)context
Parameters
observer
オブザーバとして取り除くオブジェクト。
keyPath
観測する配列との相対位置を表す、キーパス。KVO変化通知を受け取ると登録してあるオブジェクトへの値。この値がnilではいけません。
context
通知へ渡すコンテキスト。
Special Considerations
NSArrayオブジェクトは観察対象には出来ないので、このメソッドをNSArrayオブジェクトで呼び出すと、例外が発生します。配列を観察する代わりに、配列は関連するオブジェクトのコレクションと見なして、そこにある多対多関係を観察します。
Availability
Available in OS X v10.7 and later.
See Also
- addObserver:forKeyPath:options:context:
- removeObserver:fromObjectsAtIndexes:forKeyPath:
Declared In
NSKeyValueObserving.h
reverseObjectEnumerator
配列にある全てのオブジェクトを、逆順でアクセスが可能となる列挙オブジェクトを返します。
- (NSEnumerator *)reverseObjectEnumerator
Return Value
配列にある全てのオブジェクトへアクセスが可能となる列挙オブジェクト。列挙は1番高いインデックスの要素から降順で行います。
Special Considerations
NSArrayの可変サブクラスでこのメソッドを使うなら、列挙中にその配列を変更してはいけません。
高速列挙プロトコルを使う方が、より効果的です(NSFastEnumerationを参照してください)。高速列挙は、OS X v10.5以降、 iOS 2.0以降で利用可能です。
Availability
Available in OS X v10.0 and later.
See Also
- objectEnumerator
nextObject (NSEnumerator)
Related Sample Code
Rulers
Sketch+Accessibility
SourceView
Declared In
NSArray.h
setValue:forKey:
指定されたバリューとキーを使って、配列のアイテムそれぞれへsetValue:forKey:を呼び出します。(訳者注、動作が良く理解できません、訳が間違っているかも。Invokes setValue:forKey: on each of the array's items using the specified value and key.)
- (void)setValue:(id)value forKey:(NSString *)key
Parameters
value
バリューオブジェクト。
key
バリューを保持するキー。
Availability
Available in OS X v10.3 and later.
See Also
- valueForKey:
Declared In
NSKeyValueCoding.h
sortedArrayHint
配列を解析し、ある"ヒント"がsortedArrayUsingFunction:context:hint:へあたえられたときに配列をソートが早くなる、そのヒントを返します。
- (NSData *)sortedArrayHint
Availability
Available in OS X v10.0 and later.
See Also
- sortedArrayUsingFunction:context:hint:
Declared In
NSArray.h
sortedArrayUsingComparator:
レシーバ配列の要素を昇順に並べた配列を返します。その順序は、あたえられたNSComparatorブロックで指定された比較*メソッドで決定されます。(*comparison, コンパリゾン)
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr
Parameters
cmptr
比較ブロック(*comparator, コンパレータ,比較演算子)。
Return Value
レシーバ配列の要素を昇順に並べた配列を返します。その順序は、cmptrで指定された比較メソッドで決定されます。
Availability
Available in OS X v10.6 and later.
Related Sample Code
ComplexBrowser
SimpleCocoaBrowser
TextEdit
Declared In
NSArray.h
sortedArrayUsingDescriptors:
あたえられた配列のソート記述子*を用いて指定した様にソートした、レシーバ配列のコピーを返します。(*sort descriptor, ソートディスクリプタ)
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
Parameters
sortDescriptors
NSSortDescriptorオブジェクトの配列。
Return Value
sortDescriptorsで指定した様にソートした、レシーバ配列のコピー。
Discussion
先頭の記述子は、レシーバ配列の内容をソートするのに用いるプライマリキーパスを指定します。それの続く記述子は、コピーされた値のソートをより詳細にするのに使われます。追補する情報はNSSortDescriptorを参照してください。
Availability
Available in OS X v10.3 and later.
See Also
- sortedArrayUsingSelector:
- sortedArrayUsingFunction:context:
- - sortedArrayUsingFunction:context:hint:
Related Sample Code
Son of Grab
Declared In
NSSortDescriptor.h
sortedArrayUsingFunction:context:
レシーバ配列の要素を昇順に並べた、新しい配列を返します。順序は、あたえられたNSComparatorブロックで指定された比較*メソッドで決定されます。(*comparison, コンパリゾン)
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context
Discussion
レシーバ配列の要素へのリファレンスが入った新しい配列。このレファレンスはコピーのものではありません。
比較関数が2つの要素を比較するのに使われます。つまり、前の要素が次の要素より小さければNSOrderedAscendingが、前の要素が次の要素より大きければNSOrderedDescendingが、2つの要素が等しいならNSOrderedSameが、それぞれ返されます。
比較関数が呼び出されるときは、contextが第三の引数として渡されます。
これにより、外からあたえられたパラメータを基にして比較が行えるようになります。たとえば、ケースに依存する、しない、それぞれの場合での文字ソートなど。
anArray(NSNumberオブジェクトの配列)があたえられた場合、この種の比較関数は:
NSInteger intSort(id num1, id num2, void *context)
{
int v1 = [num1 intValue;
int v2 = [num2 intValue;
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
ソートされたanArrayは、次のように生成されます:
NSArray *sortedArray; sortedArray = [anArray sortedArrayUsingFunction:intSort context:NULL];
Availability
Available in OS X v10.0 and later.
See Also
- sortedArrayUsingDescriptors:
- sortedArrayUsingFunction:context:hint:
- sortedArrayUsingSelector:
Declared In
NSArray.h
sortedArrayUsingFunction:context:hint:
比較関数のコンパレータで定義された順序、その昇順でソートされたレシーバ配列の要素を並べた新しい配列を返します。
- (NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))comparator context:(void *)context hint:(NSData *)hint
Discussion
レシーバ配列の要素へのリファレンスが入った新しい配列。このレファレンスはコピーのものではありません。
このメソッドは- sortedArrayUsingFunction:context:]に似ていますが、あたえられたhintを使ってソートプロセスを高速化します。配列がほとんどソートされていると分かっていれば、このメソッドは- sortedArrayUsingFunction:context:よりも高速です。1度に大きな配列(N個のエンティティ)をソートしようとしていて、それほど変更を加えていないなら(P回の追加と削除、ここでPはNよりかなり小さい)、概念的にはN個の"古い"アイテムと、P個の"新しい"アイテムの間で行うマージソートを行ったオリジナルのソートを再利用できます。(*merge sort, 併合分離)
適切なヒントを得るには、sortedArrayHintを使ってください。オリジナルの配列がソートされていて、必要になるまでそのままな状態で保たれており、その後で配列が変更されているなら、ヒントを得るべきです。ヒントは、O(N)にあるsortedArrayHintによって計算されます。ここで、配列にあるアイテムは-hashメソッドを実装していると仮定しています。適切なヒントがあたえられ、ハッシュ関数が"良い"ハッシュ関数だと仮定すると、- sortedArrayUsingFunction:context:hint:は配列を O(P*LOG(P)+N) 回ソートします。ここで、Pは追加または削除した回数です。
ヒントは、単なるN個のハッシュ値が入ったサイズNの配列です。再度ソートするために、ハッシュをインデックスへ割り付けるマップテーブルを内部的に生成する必要があります。たとえば、ソート済みの配列 {A, B, D, E, F} があり、対応するハッシュ値は {25, 96, 78, 32, 17}とします。その配列に小さな変更を加えて、結果は {E, A, C, B, F} となったとします。マッピングテーブルは、ハッシュ値 {25, 96, 78, 32, 17} をインデックス {#0, #1, #2, #3, #4} へ割り付けます。{E, A, C, B, F} へのハッシュが {32, 25, 99, 96, 17} なら、マッピングテーブルを用いて第1次ソート{#3, #0, ?, #1, #4}が得られ、結果として最初の2次ソート済み配列 {A, B, E, F} を生成し、軽量のマージソートを {C} と行い、 {A, B, C, E, F}が得られます。
Availability
Available in OS X v10.0 and later.
See Also
- sortedArrayUsingDescriptors:
- sortedArrayUsingFunction:context:
- sortedArrayUsingSelector:
Declared In
NSArray.h
sortedArrayUsingSelector:
あたえられたセレクタで指定された比較メソッドを用いて決定した順序、その昇順でソートされたレシーバ配列の要素を並べた新しい配列を返します。
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator
Parameters
comparator
一度に2つの要素を比較するのに使うメソッドを指定するセレクタ。レシーバ配列の要素*が引数より小さければNSOrderedAscendingが、レシーバ配列が引数り大きければNSOrderedDescendingが、2つの要素が等しいならNSOrderedSameが、それぞれをこのメソッドは返します。(*原文は、the receiving arrayのみ)
Return Value
comparatorセレクタで指定された比較メソッドを用いて決定した順序、その昇順でソートされたレシーバ配列の要素を並べた新しい配列
Discussion
レシーバ配列の要素へのリファレンスが入った新しい配列。このレファレンスはコピーのものではありません。
comparatorメッセージは配列にあるどのオブジェクトへも送られ、配列にあるもう1つのオブジェクトを引数として受け取ります。
たとえば、NSStringオブジェクトの配列は、NSSringクラスで宣言されているcaseInsensitiveCompare:メソッドを使ってソートすることができます。anArrayの存在を仮定すると、ソートされた配列は次のように生成できます:
NSArray *sortedArray =
[anArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
Availability
Available in OS X v10.0 and later.
See Also
- sortedArrayUsingDescriptors:
- sortedArrayUsingFunction:context:
- sortedArrayUsingFunction:context:hint:
Related Sample Code
Dicey
ImageApp
Declared In
NSArray.h
sortedArrayWithOptions:usingComparator:
あたえられたNSComparatorブロックで指定された比較メソッドを用いて決定した順序、その昇順でソートされたレシーバ配列の要素を並べた新しい配列を返します。
- (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr
Parameters
opts
ソートに用いるオプションを指定するビットマスク(同時進行で実行して良いのか、安定した動作をした方が良いのか)。
cmptr
比較子ブロック。
Return Value
cmptrで指定された比較メソッドを用いて決定した順序、その昇順でソートされたレシーバ配列の要素を並べた新しい配列を返します。
Availability
Available in OS X v10.6 and later.
Declared In
NSArray.h
subarrayWithRange:
あたえられた範囲内にあるレシーバ配列の要素が入った新しい配列を返します。
- (NSArray *)subarrayWithRange:(NSRange])range
Parameters
range
レシーバ配列の要素が入る範囲。
Return Value
rangeにあるレシーバ配列の要素が入った新しい配列
Discussion
rangeがレシーバ配列の境界内でなければ、NSRangeExceptionが発生します。
たとえば、次のコードは、wholeArrayの前半部で見つかった要素が入った配列を生成します(wholeArrayの存在を仮定して)
NSArray *halfArray; NSRange] theRange;
theRange.location = 0; theRange.length = [wholeArray count / 2;
halfArray = [wholeArray subarrayWithRange:theRange;
Availability
Available in OS X v10.0 and later.
Related Sample Code
CryptoCompatibility
Declared In
NSArray.h
valueForKey:
配列にあるオブジェクトすべてをキーを使ってvalueForKey:で呼び出し、得られた結果が入った配列を返します。
- (id)valueForKey:(NSString *)key
Parameters
key
値を取得するためのキー。
Return Value
キーを使っ取得した値。
Discussion
どのオブジェクトもnilを返したら、返される配列はNSNulll>dummを含みます。
Availability
Available in OS X v10.3 and later.
See Also
- setValue:forKey:
Declared In
NSKeyValueCoding.h
writeToFile:atomically:
あたえられたパスにあるファイルへ、配列の内容を書き込む。
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
Parameters
path
配列の内容を書き込むファイルへのパス。
pathがチルダ(~)文字を含むなら、このメソッドを呼び出す前に、NSStringのメソッドstringByExpandingTildeInPathを使ってチルダを展開しておく必要があります。
flag
YESなら、配列は一時ファイルに書き込まれ、その後で一時ファイルはpathへリネームされます。NOなら、配列は直接pathへ書き込まれます。YESオプションは、既にpathが存在していれば、たとえ書き込み中にシステムがクラッシュしても、元のpathが破損しないのを保証します。
Return Value
ファイル書き込みに成功したらYES、そのほかの場合はNO。
Discussion
配列の内容にプロパティリストオブジェクト(NSString, NSData, NSArray, or NSDictionary objects)のみが入っているなら、このメソッドで書き込んだファイルはarrayWithContentsOfFile:/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/Methods_1 クラスメソッドかinitWithContentsOfFile:インスタンスメソッドを使って新しい配列を初期化するのに使えます。このメソッドは、ファイルへ書き込みを行う前に、配列に含まれるオブジェクト全てがプロパティリスト形式のオブジェクトかどうかを再帰的に検証します。そのあと、オブジェクトがプロパティリスト形式のオブジェクトでないならNOを返します。というのは、このメソッドにより書き込まれるファイルが、有効なプロパリティリストとはならないからです。
Availability
Available in OS X v10.0 and later.
See Also
- initWithContentsOfFile:
Declared In
NSArray.h
writeToURL:atomically:
あたえられたURLで指定された場所へ、配列の内容を書き込む。
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag
Parameters
aURL
配列の内容を書き込む場所。
flag
YESなら、配列は一時的な場所に書き込まれ、その後で一時的な場所はpathへリネームされます。NOなら、配列は直接aURLへ書き込まれます。YESオプションは、既にaURLが存在していれば、たとえ書き込み中にシステムがクラッシュしても、元のaURLが破損しないのを保証します。
Return Value
場所への書き込みに成功したらYES、そのほかの場合はNO。
Discussion
配列の内容にプロパティリストオブジェクト(NSString, NSData, NSArray, or NSDictionary objects)のみが入っているなら、このメソッドで書き込んだファイルはarrayWithContentsOfURL:クラスメソッドか- initWithContentsOfURL:インスタンスメソッドを使って新しい配列を初期化するのに使えます。
Availability
Available in OS X v10.0 and later.
See Also
- initWithContentsOfURL:
Declared In
NSArray.h
Copyright © 2013 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2013-10-22
- This document is referred from the original, NSArray Class Reference, Mac Developer LibraryDeveloperSearch, updated in 2013-10-22.