我有一个包含10个对象的数组,有时在10个对象中,有些对象趋于null
,如果任何对象为null,则在UIPickerView
中它为空,但我想要If任何对象的值为null然后它应该被跳过..我想要做的是
if([ob1 isEqualToString:@""]){
NSArray *Ar =[NSArray arrayWithObjects:ob2,ob3,ob4,ob5,ob6,ob7,ob8,ob9,ob10,Nil];}
else if [ob2 isEqualToString:@""] {}
但如果我以这种方式跳过任何空值,这将是长链。应该是更好的方法。
答案 0 :(得分: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) ...
答案 1 :(得分: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.
答案 2 :(得分:0)
首先选择NSMutableArray
。
还有一个NSArray
,它使用包括null在内的所有对象进行初始化。
然后检查对象是否为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包含所有对象。我们可以看到它需要较少的编码。
答案 3 :(得分:0)
尝试使用此条件
if ((ob2 == [NSNull null]) && ob2 == nil) {
}
答案 4 :(得分: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的类别。