1

私は10個のオブジェクトを含む配列を持っていますが、時には10個のオブジェクトのうち、一部のオブジェクトがそうなる傾向がnullあり、オブジェクトのいずれかがnullの場合、それは私の中で空に UIPickerViewなりますが、オブジェクトの値がnullの場合はスキップする必要があります。私がやろうとしていることは

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

しかし、この方法でnull値をスキップすると、これは長いチェーンになります..より良い方法は何ですか.

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];

これは、各オブジェクトが存在するかどうかをチェックしますnilnilそうではなく、長さの値がゼロでないことも確認したい場合は、各if条件を次のように変更します。

if (ob1.length) ...
于 2013-09-06T04:44:25.083 に答える
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];

arrayWithObjectsNilnil オブジェクトをスキップするために使用できます。

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

または、nil オブジェクトを次のように変換するために使用しarrayWithObjectsNullます。[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 に答える
0

最初にNSMutableArray. そして、NSArraynull を含むすべてのオブジェクトで初期化される です。次に、オブジェクトが 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

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 に答える