我一直试图弄清楚是否可以使用与此类似的代码以编程方式调整NSArray
的大小:
NSArray *resize = [NSArray arrayResized:oldarray size:10];
在NSArray
填充NSMutableArray
后,有oldarray
(如果可能的话,不是[NSNull null]
)会有哪些元素。
答案 0 :(得分:2)
由于NSArray对象是不可变的(不能更改它们包含的对象),因此调整NSArrays的容量是没有用的。
但是,您可以编写一个类似于您想要的内容的类别:
@interface NSArray (Resizing)
-(NSArray *) resize:(NSInteger) newSize;
@end
@implementation NSArray (Resizing)
-(NSArray *) resize:(NSInteger) newSize {
int size = (newSize > [self count]) ? self.count : newSize;
NSMutableArray *array = [NSMutableArray arrayWithCapacity:size];
for(int i = 0; i < size; i++)
[array addObject:[self objectAtIndex:i]];
return [NSArray arrayWithArray:array];
}
@end
答案 1 :(得分:2)
虽然你的问题值得“你真正想做什么?”,但这是一个可能的解决方案:
@interface NSArray (RCArrayAdditions)
- (NSArray *)arrayByAppendingWithNulls:(NSUInteger)numberOfAppendedNulls;
@end
@implementation NSArray (RCArrayAdditions)
- (NSArray *)arrayByAppendingWithNulls:(NSUInteger)numberOfAppendedNulls {
NSMutableArray *expandedArray = [self mutableCopy];
for (NSUInteger i = 0; i < numberOfAppendedNulls; i ++) {
[expandedArray addObject:[NSNull null]];
}
return expandedArray;
}
@end
答案 2 :(得分:0)
你想要NSPointerArray。