【问题标题】:how to check status inside NSMutableArray如何检查 NSMutableArray 中的状态
【发布时间】:2013-05-30 07:19:08
【问题描述】:

我有 3 个NSMutableArray。我想比较三个中的两个 NSMutableArray 并找到不同的索引并存储在 anotherNSMutableArray 中。我想在第三个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");
                }
            }

【问题讨论】:

    标签: ios objective-c null nsmutablearray


    【解决方案1】:

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

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

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

    【讨论】:

    • count 不是一个属性...你应该写它 [differentValue count] ;)
    • @Bastian 这是风格问题。由于 Foundation 根本不使用属性,所以我更喜欢使用属性语法来调用“类属性”的 Foundation 方法;它仍然可以正常工作,而且我的代码看起来更容易一些。
    • 是的 .. 我只是希望人们不要开始做像 NSArray.alloc.init 这样的事情,因为这样看起来更容易;)
    • 是的,这太邪恶了……尽管我必须承认,在我发牢骚的日子里,我知道用点语法调用copy。它是一个返回对象副本的访问器,对吧?对吗?
    • @Bastian:不,他们写的是NSArray.new :-)
    【解决方案2】:
    if(![jsonArray containsObject:yourObject])
    {
        [differentValue addObject:yourObject];
    }
    

    还请注意,您正在做以下事情,这是泄漏内存:

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

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

    NSMutableArray *jsonArray = [dic objectForKey:@"Modified"];
    

    【讨论】:

    • 我的朋友,我的问题是 differentValue 没有值,并且在编写此代码时 if (differentValue == NULL) { NSLog(@"this array is null"); } 不工作
    • 哦。之前没有从您的问题中得到答案
    猜你喜欢
    • 2018-01-06
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多