我需要一个方法,将一些对象(2-10)添加到我的数组中,跳过这些是nils的对象:
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObjectsSkipNils:obj1, obj2, obj3];我怎样才能以优雅的方式编写这个方法呢?
发布于 2013-03-30 03:59:36
这个类别方法可以工作:
@interface NSMutableArray (MyAdditions)
- (void)addObjectsSkipNilsWithCount:(NSUInteger)count objects:(id)obj, ...;
@end
@implementation NSMutableArray (MyAdditions)
- (void)addObjectsSkipNilsWithCount:(NSUInteger)count objects:(id)obj, ...
{
va_list ap;
va_start(ap, obj);
// First object:
if (obj != nil)
[self addObject:obj];
// Remaining objects:
for (NSUInteger i = 1; i < count; i++) {
id myobj = va_arg(ap, id);
if (myobj != nil)
[self addObject:myobj];
}
va_end(ap);
}
@end示例:
NSMutableArray *a = [NSMutableArray array];
[a addObjectsSkipNilsWithCount:3 objects:@"foo", nil, @"bar"];
NSLog(@"%@", a);
// Output: ( foo, bar )您必须显式指定对象的数量,因为nil不能用作变量参数列表的终止符。(如果计数大于实际提供的对象数,则可能会发生不好的事情!)
发布于 2013-03-30 03:54:12
您可以使用:
[yourMainArray removeObjectIdenticalTo:[NSNull null]];现在,如果你想把它复制到arr,你可以很容易地做到。
https://stackoverflow.com/questions/15710438
复制相似问题