如何在iPhone中检查数组是否为空

时间:2015-08-06 06:57:01

标签: ios objective-c iphone nsmutablearray nsarray

我有一个数组数组。我想检查我的内部数组是否为空。我正在检查数组的对象是否为空字符串。 这是我的代码:

NSMutableArray *newArray = [NSMutableArray array];
NSMutableArray *selectArray = [NSMutableArray array];

for (int i = 0; i < [newArray count]; i++)
{
    NSArray *arr = [newArray objectAtIndex:i];
    if ([arr count] > 0)
    {
        NSString *str = [arr objectAtIndex:0];

        if (![str isEqualToString:@""])
        {
            [selectArray addObject:str];
        }
    }
}

我的newArray是array的数组。我想在selectArray中添加非空的字符串。但是,selectArray中只添加了第0个索引对象多次。 请建议我,我在哪里做错了。谢谢

5 个答案:

答案 0 :(得分:1)

那是因为你刚刚获得newArray元素的第0个元素,我的意思是这一行

NSString *str = [arr objectAtIndex:0];  

你应该在你的代码中添加另一个。使用此代码而不是您的代码

NSMutableArray *newArray = [NSMutableArray array];
NSMutableArray *selectArray = [NSMutableArray array];

for (int i = 0; i < [newArray count]; i++){
    NSArray *arr = [newArray objectAtIndex:i];

    for (int j = 0; j < [arr count]; j++){
        NSString *str = [arr objectAtIndex:j];

        if (![str isEqualToString:@""]){
            [selectArray addObject:str];
        }
    }
}

答案 1 :(得分:0)

使用此代码您无需创建任何额外变量。

for (int i = 0; i < [newArray count]; i++)
{
    for (int j = 0; j < [[newArray objectAtIndex:i] count]; j++)
    {
        if (![[[newArray objectAtIndex:i] objectAtIndex:j] isEqualToString:@""])
        {
            [selectArray addObject:str];
        }
    }
}

答案 2 :(得分:0)

您可以使用以下泛型函数来检查任何值或对象是空还是空。

-(BOOL)isEmpty:(id)object{
    return object == nil
    || [object isKindOfClass:[NSNull class]]
    || ([object respondsToSelector:@selector(length)]
        && [(NSData *)object length] == 0)
    || ([object respondsToSelector:@selector(count)]
        && [(NSArray *)object count] == 0);
}

答案 3 :(得分:0)

你可以试试这个

    NSMutableArray *newArray = [NSMutableArray array];
    NSMutableArray *selectArray = [NSMutableArray array];

    for (NSArray *arrayFromNewArray in newArray) {
        if ([arrayFromNewArray count] > 0)
        {
            NSString *str = [arrayFromNewArray firstObject];

            if (![str isEqualToString:@""])
            {
                [selectArray addObject:str];
            }
        }  
    }

答案 4 :(得分:-1)

你应该

NSMutableArray *newArray = [NSMutableArray array];
NSMutableArray *selectArray = [NSMutableArray array];

for (int i = 0; i < [newArray count]; i++)
{
NSArray *arr = [newArray objectAtIndex:i];

for (int j = 0; j < [arr count]; j++)
{
    NSString *str = [arr objectAtIndex:j];

    if (![str isEqualToString:@""])
    {
        [selectArray addObject:str];
    }
}
}

问题是你忘记了第二个循环:)让我知道我是否正确。