1

我有一个包含 10 个对象的数组,有时在 10 个对象中,有些对象倾向于null,如果任何对象为空,它在我 的值为空,UIPickerView但我想要如果任何对象的值为空,那么它应该被跳过。 . 我想做的是

if([ob1 isEqualToString:@""]){
NSArray *Ar =[NSArray arrayWithObjects:ob2,ob3,ob4,ob5,ob6,ob7,ob8,ob9,ob10,Nil];}
else if [ob2 isEqualToString:@""] {}

但是,如果我以这种方式跳过任何空值,这将是一个长链......应该是更好的方法。

4

5 回答 5

1

如果这 10 个对象中的任何一个都可以nil(注意 -nil用于 Objective-C 对象引用),那么您需要以艰难的方式做到这一点:

NSMutableArray *array = [[NSMutableArray alloc] init];
if (ob1) [array addObject:ob1];
if (ob2) [array addObject:ob2];
if (ob3) [array addObject:ob3];
// ...
if (ob10) [array addObject:ob10];

这会检查每个对象是否nil存在。如果您还想确保它不是nil并且它具有非零长度值,请将每个if条件更改为:

if (ob1.length) ...
于 2013-09-06T04:44:25.083 回答
0

您应该使用NSMutableArray, 而不是NSArray. 如下所示:

NSMutableArray *m_array = [NSMutableArray array];

//Now you can check your objects if nil or empty string @"" and add it to the array.

if(object1==nil || [object1 isEqualToString:@""])
{
   //the string is empty do not add anything to array
}
else
{
  //we have a proper object
  [m_array addObject:object1];
}

//here you'll get the array will only proper objects.
//use this array to fill your pickerView data.
于 2013-09-06T04:44:51.130 回答
0

首先取一个NSMutableArray. 并且使用NSArray包括 null 在内的所有对象进行初始化。然后检查对象是否不为空,然后添加到可变数组中。

NSMutableArray *array = [[NSMutableArray alloc]init];
  for (int i=0;i<10;i++) {
    if (![[objectArray objectAtIndex:i] isEqualToString:@""]) {
      [array addObject:[objectArray objectAtIndex:i]];
    }
  }

其中 ObjectArray 是 NSArray 包含所有对象。我们可以看到它需要更少的编码。

于 2013-09-06T04:47:36.890 回答
0

尝试使用这个条件

if ((ob2 == [NSNull null]) && ob2 == nil) {

}
于 2013-09-06T04:49:00.653 回答
0

我对 nil 对象有同样的问题,并为此写了一个类别NS(Mutable)Array。所以而不是:

NSMutableArray *array = [[NSMutableArray alloc] init];
if (ob0) [array addObject:ob0];
if (ob1) [array addObject:ob1];
if (ob2) [array addObject:ob2];
if (ob3) [array addObject:ob3];

您可以arrayWithObjectsNil用于跳过 nil 对象:

id obs[] = { ob0, ob1, ob2, ob3 }; // Assuming obj1 and obj3 are nil. 
  NSLog(@"%@", [NSArray arrayWithObjectsNil:obs size:sizeof(obs)]);
> ( 0, 2 )

arrayWithObjectsNull用于将 nil 对象转换为[NSNull null]

  NSLog(@"%@", [NSArray arrayWithObjectsNull:obs size:sizeof(obs)]);
> ( 0, "<null>", 2, "<null>" )

对于类别,也可以使用可变性并以这种方式编写:

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObjectNil:ob0];   // skip, if ob0 is nil
[array addObjectNull:ob1];  // add [NSNull null], if ob1 is nil
...

还有其他具有相同逻辑的方法。

您将在 GitHub 上找到名为Nilus的类别。

于 2014-01-10T09:48:51.727 回答