NSArray から項目を削除する方法。
108501 次
7 に答える
127
NSArray は可変ではありません。つまり、変更することはできません。NSMutableArrayを見てください。「オブジェクトの削除」セクションをチェックしてください。アイテムを削除できる関数がたくさんあります。
[anArray removeObjectAtIndex: index];
[anArray removeObject: item];
[anArray removeLastObject];
于 2009-11-13T10:51:31.317 に答える
24
NSMutableArray *arrayThatYouCanRemoveObjects = [NSMutableArray arrayWithArray:your_array];
[arrayThatYouCanRemoveObjects removeObjectAtIndex:your_object_index];
[your_array release];
your_array = [[NSArray arrayWithArray: arrayThatYouCanRemoveObjects] retain];
それについてです
your_arrayを所有していない場合(つまり、自動リリースされている場合)、リリースを削除してメッセージを保持します
于 2009-11-13T11:37:34.173 に答える
20
このカテゴリはあなたの好みに合うかもしれません。しかし!その使用法に倹約してください。NSMutableArray に変換してから再び戻すため、まったく効率的ではありません。
@implementation NSArray (mxcl)
- (NSArray *)arrayByRemovingObject:(id)obj
{
if (!obj) return [self copy]; // copy because all array* methods return new arrays
NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:self];
[mutableArray removeObject:obj];
return [NSArray arrayWithArray:mutableArray];
}
@end
于 2010-11-26T16:09:48.060 に答える
4
このメソッドで削除Object
します:NSArray
-(NSArray *) removeObjectFromArray:(NSArray *) array withIndex:(NSInteger) index {
NSMutableArray *modifyableArray = [[NSMutableArray alloc] initWithArray:array];
[modifyableArray removeObjectAtIndex:index];
return [[NSArray alloc] initWithArray:modifyableArray];
}
于 2014-10-21T21:38:14.063 に答える
3
mxcl のようなカテゴリを作成しましたが、これは少し高速です。
私のテストでは、最大 15% の改善が見られました (私が間違っている可能性もあります。ご自身で 2 つを比較してみてください)。
基本的に、オブジェクトの前にある配列の部分と後ろの部分を取り、それらを結合します。したがって、要素を除外します。
- (NSArray *)prefix_arrayByRemovingObject:(id)object
{
if (!object) {
return self;
}
NSUInteger indexOfObject = [self indexOfObject:object];
NSArray *firstSubArray = [self subarrayWithRange:NSMakeRange(0, indexOfObject)];
NSArray *secondSubArray = [self subarrayWithRange:NSMakeRange(indexOfObject + 1, self.count - indexOfObject - 1)];
NSArray *newArray = [firstSubArray arrayByAddingObjectsFromArray:secondSubArray];
return newArray;
}
于 2013-12-11T21:03:23.960 に答える