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

时间:2013-12-02 13:44:21

标签: objective-c nsmutablearray

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

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之前,我在日志中的选定索引处获取值。在这种情况下如何获得检查值?

3 个答案:

答案 0 :(得分:1)

问题在于您达到nil值,因此arrayWithObjects:方法认为您位于对象列表的末尾。

这样的事情会起作用:

NSMutableArray *arrayOfCheckedBox = [NSMutableArray arrayWithCapacity:7];

if (namePropertyString)
    [arrayOfCheckedBox addObject:namePropertyString];

if (lastNamePropertyString)
    [arrayOfCheckedBox addObject:lastNamePropertyString];

答案 1 :(得分:0)

我建议将复选框值存储在BOOL数组中。 首先将它们包装在NSNumbers中并打开它们以检索它们。

包装存储,

[NSNumber numberWithBool:YES]] 

解开包装,

[[your_array objectAtIndex:index] boolValue]

答案 2 :(得分:-1)

对于null值,似乎是字符串文字@“”而不是NSNull.So使用以下方法删除null对象:

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