0

我有 3 个NSMutableArray。我想比较NSMutableArray三个中的两个并找到不同的索引并存储在另一个中NSMutableArray。我想在第三个不保存时打印这句话NSmutableArray

这是我的代码,但它不起作用:

            NSMutableArray *jsonArray = [[NSMutableArray alloc]init];
            jsonArray = [dic objectForKey:@"Modified"];
            NSMutableArray *sqliteArray = [[NSMutableArray alloc]init];
            [sqliteArray addObjectsFromArray:ModiArray];
            differentValue = [[NSMutableArray alloc]init];
    //guys jsonArray and SqliteArray not different index
        if ([jsonArray count] == [sqliteArray count])
            {
                for (int i = 0; i < [sqliteArray count]; i++)
                {
                    if (![jsonArray[i] isEqual:sqliteArray[i]])
                    {
                        [differentValue addObject:[NSNumber numberWithInt:i+1]];
                    }
                }
//My problem here!!! when I NSLog differentValue show me empty but when I write this code dont work
                if (differentValue == NULL)
                {
                    NSLog(@"this array is null");
                }
            }
4

2 回答 2

2

null* 数组和空数组之间是有区别的,就像空白购物清单和没有一张纸之间存在区别一样。如果要测试数组是否为空,最简单的方法是说if(differentValue.count == 0).

(mayuur 也是正确的,您可以用调用替换整个循环-containsObject:,但是您的代码没有任何问题;只是没有尽可能地使用框架。)

* 实际上,nil对于对象来说,稍微偏爱,因为它被声明为id,但在这段代码中并不重要。

于 2013-05-30T07:25:38.163 回答
1
if(![jsonArray containsObject:yourObject])
{
    [differentValue addObject:yourObject];
}

另请注意,您正在执行以下操作,即泄漏内存:

NSMutableArray *jsonArray = [[NSMutableArray alloc]init]; // NOT RELEASED
jsonArray = [dic objectForKey:@"Modified"];

相反,您可以直接分配您的数组,例如:

NSMutableArray *jsonArray = [dic objectForKey:@"Modified"];
于 2013-05-30T07:22:11.627 回答