在 NSMutableArray 中筛选 NSNumber 对象,而无需 NSPredicate



我觉得我有一个独特的问题。 此问题源于解析 COLLADA XML 文件。 我正在按文件元素中的空格过滤,它工作正常,除了当我将其转储到 NSArray 时,在我达到我试图隔离的实际点之前,我得到了一堆垃圾零值。

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

我想我可以做这样的事情:

NSNumber * newNumber;
NSMutableArray * newArray = [[NSMutableArray alloc] init];
for(oldNumber in oldMutableArray)
{
    if(oldNumber != 0)
    {
        [newArray addObject: oldNumber];
    }
}

但是,这不起作用。 :)

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

您应该能够执行此操作:

[allXMLObjects removeObject:@(0)];

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

添加oldNumber,而不是newNumbernewNumber nil

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

最新更新