首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向NSMutableArray添加多个跳过nil对象的对象?

如何向NSMutableArray添加多个跳过nil对象的对象?
EN

Stack Overflow用户
提问于 2013-03-30 03:48:38
回答 2查看 133关注 0票数 1

我需要一个方法,将一些对象(2-10)添加到我的数组中,跳过这些是nils的对象:

代码语言:javascript
复制
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObjectsSkipNils:obj1, obj2, obj3];

我怎样才能以优雅的方式编写这个方法呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-30 03:59:36

这个类别方法可以工作:

代码语言:javascript
复制
@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

示例:

代码语言:javascript
复制
NSMutableArray *a = [NSMutableArray array];
[a addObjectsSkipNilsWithCount:3 objects:@"foo", nil, @"bar"];
NSLog(@"%@", a);
// Output: ( foo, bar )

您必须显式指定对象的数量,因为nil不能用作变量参数列表的终止符。(如果计数大于实际提供的对象数,则可能会发生不好的事情!)

票数 3
EN

Stack Overflow用户

发布于 2013-03-30 03:54:12

您可以使用:

代码语言:javascript
复制
[yourMainArray removeObjectIdenticalTo:[NSNull null]];

现在,如果你想把它复制到arr,你可以很容易地做到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15710438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档