Objective c 从目标c中的可变数组中删除空对象

Objective c 从目标c中的可变数组中删除空对象,objective-c,nsmutablearray,Objective C,Nsmutablearray,我有一个可变的复选框数组 NSMutableArray *arrayOfCheckedBox = [NSMutableArray arrayWithObjects:namePropertyString, lastNamePropertyString, companyPropertyString, workEmailPropertyString, personalEmailPropertyString, workPhonePropertyString, cellNumberPropertyStri

我有一个可变的复选框数组

NSMutableArray *arrayOfCheckedBox = [NSMutableArray arrayWithObjects:namePropertyString, lastNamePropertyString, companyPropertyString, workEmailPropertyString, personalEmailPropertyString, workPhonePropertyString, cellNumberPropertyString, nil];
    [arrayOfCheckedBox removeObjectIdenticalTo:[NSNull null]]; //not working
    NSLog(@"array of check box = %@", arrayOfCheckedBox);
若我单击索引0、1和4处的复选框,它将只收集索引0和1处的对象,而不会检测到索引4


在arrayOfCheckedBox中获取选定索引之前,我在日志中获取该索引的值。在这种情况下如何获取选中值?

我建议将复选框值存储在布尔数组中。 首先将它们包装在NSNumbers中,然后展开它们以检索它们

包装到仓库

[NSNumber numberWithBool:YES]] 
展开取回

[[your_array objectAtIndex:index] boolValue]

For null值似乎是字符串文字@“”,而不是NSNull。因此,请使用以下方法删除null对象:

    NSLog(@"%d", [arrayOfCheckedBox count]);
    NSString *nullString = @"<null>";
    [arrayOfCheckedBox removeObject:nullString];
    NSLog(@"%d", [arrayOfCheckedBox count]);
NSLog(@“%d”,[arrayOfCheckedBox count]);
NSString*nullString=@;
[arrayOfCheckedBox removeObject:nullString];
NSLog(@“%d”,[arrayOfCheckedBox计数]);

问题是您遇到了一个
nil
值,因此
arrayWithObjects:
方法认为您位于对象列表的末尾

类似这样的方法会奏效:

NSMutableArray *arrayOfCheckedBox = [NSMutableArray arrayWithCapacity:7];

if (namePropertyString)
    [arrayOfCheckedBox addObject:namePropertyString];

if (lastNamePropertyString)
    [arrayOfCheckedBox addObject:lastNamePropertyString];

尝试将
[NSNull null]
替换为nil,您是否检查过我在[NSNull]之前尝试过nil。没有wokr@OptimusPrime:查看我的答案,它可能会解决您的问题。
NSIndexSet
可能对您的情况更有用。您可以将它们包装在一个NSNumber中,
[NSNumber numberwhithbool:YES]]
,然后使用
[[your_array objectAtIndex:index]boolValue]打开它们“”仅出现在某些打印或格式化路径中。它在任何其他上下文中都不等同于nil或[NSNull]。