在没有NSPredicate的NSMutableArray中过滤NSNumber对象?

时间:2013-10-24 16:55:04

标签: objective-c nsarray

我觉得我有一个独特的问题。此问题源于解析COLLADA XML文件。我正在通过文件元素中的空格进行过滤,并且它工作正常,除非我将其转储到NSArray,在得到我想要分离的实际点之前,我得到一堆垃圾零值。

我的问题是......如果我的NSMutableArray有一堆NSNumber值,并且我想过滤掉所有零值,我该怎么办呢?

我以为我可以做类似的事情:

NSNumber * newNumber;
NSMutableArray * newArray = [[NSMutableArray alloc] init];

for(oldNumber in oldMutableArray)
{
    if(oldNumber != 0)
    {
        [newArray addObject: oldNumber];
    }
}

然而,这不起作用。 :)

2 个答案:

答案 0 :(得分:1)

这里的主要问题是!= 0实际上是在检查nil值,而不是NSNumber等于0。

你应该能够做到这一点:

[allXMLObjects removeObject:@(0)];

这将删除所有出现的数值为0的NSNumber。

答案 1 :(得分:0)

添加oldNumber,而不是newNumbernewNumbernil

NSMutableArray * newarray = [[NSMutableArray alloc] init];

for(oldNumber in oldmutablearray)
{
    if(oldnumbervalues != 0)
    {
        [newarray addObject: oldNumber];  //Add old number, not newNumber. newNumber was nil
    }
}