如何在目标 C、iOS 中将 NSMutableArray 数组划分为两个单独的数组或两个可变数组



>我有一个 4 个 objects.no 的 nsmutable 数组,我想根据条件将该对象划分为两个数组(或两个可变数组)。

for  (NSDictionary *final in SectorsArray)
{
    FinalFlightData *ffd = [FinalFlightData new];
    ffd.flightnumber = [final objectForKey:@"FLI_NUM"];
    ffd.airlineCode = [final objectForKey:@"ARL_COD"];
    ffd.departureAirport = [final objectForKey:@"DepartureAirport"];
    ffd.departureDay = [final objectForKey:@"DepartureDay"];
    ffd.departureDate = [final objectForKey:@"DepartureDate"];
    ffd.departureTime = [final objectForKey:@"DepartureTime"];
    ffd.arrivalAirport = [final objectForKey:@"ArrivalAirport"];
    ffd.arrivalDay = [final objectForKey:@"ArrivalDay"];
    ffd.arrivalDate = [final objectForKey:@"ArrivalDate"];
    ffd.arrivalTime = [final objectForKey:@"ArrivalTime"];


    [testingArray addObject:ffd];
}

所以这个测试的 nsmutable 数组有四个对象。现在我想喜欢这个。

OutboundArray = [NSMutableArray array];
InboundArray = [NSMutableArray array];
NSString *myString;
if([myString isEqualtoString:@"false"])
{
  //in here I want to put first two objects of testingArray into OutboundArray and last two objects of testingArray into InboundArray
}
else if([myString isEqualtoString:@"true"])
{
  //in here I want to put first three objects of testingArray into OutboundArray and last object of testingArray into InboundArray
}
else
{
  //in here I want to put first  object of testingArray into OutboundArray and last three objects of testingArray into InboundArray
}

我该怎么做。希望您的帮助.谢谢

使用以下代码:

if (testingArray.count >= 3)
{
    if([myString isEqualToString:@"false"])
    {
        //in here I want to put first two objects of testingArray into OutboundArray and last two objects of testingArray into InboundArray
        [OutboundArray addObjectsFromArray:[testingArray subarrayWithRange:NSMakeRange(0, 2)]];
        [InboundArray addObjectsFromArray:[testingArray subarrayWithRange:NSMakeRange(testingArray.count - 2, 2)]];
    }
    else if([myString isEqualToString:@"true"])
    {
        //in here I want to put first three objects of testingArray into OutboundArray and last object of testingArray into InboundArray
        [OutboundArray addObjectsFromArray:[testingArray subarrayWithRange:NSMakeRange(0, 3)]];
        [InboundArray addObject:testingArray.lastObject];
    }
    else
    {
        //in here I want to put first  object of testingArray into OutboundArray and last three objects of testingArray into InboundArray
        [OutboundArray addObject:testingArray.firstObject];
        [InboundArray addObjectsFromArray:[testingArray subarrayWithRange:NSMakeRange(testingArray.count - 3, 3)]];
    }
}
else if (testingArray.count == 2)
{
    [OutboundArray addObject:testingArray.firstObject];
    [InboundArray addObject:testingArray.lastObject];

}

这是一个简单的方法。 您可以根据需要进行概括。

NSArray *a = @[ @1, @2, @3, @4 ];
NSMutableArray *a1 = [NSMutableArray array];
NSMutableArray *a2 = [NSMutableArray array];
int limit = YES ? 3 : 1;
[a  enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if (idx < limit) {
        [a1 addObject:obj];
    } else {
        [a2 addObject:obj];
    }
}];

这是第二种方法,它避免了显式循环。 这需要真正的拆分,而第一个很容易修改以允许数组之间的任意路由。

NSArray *a = @[ @1, @2, @3, @4 ];
NSMutableArray *a1 = [NSMutableArray array];
NSMutableArray *a2 = [NSMutableArray array];
int limit = YES ? 3 : 1;
NSRange a1range = NSMakeRange(0, limit);
NSRange a2range = NSMakeRange(limit, a.count - limit);
a1 = [[a subarrayWithRange:a1range] mutableCopy];
a2 = [[a subarrayWithRange:a2range] mutableCopy];
您可以在 testArray 的 OutboundArray 或 InboundArray 中添加对象,

即对于第一个条件,只需对 OutboundArray 的前两个对象使用索引 0 和 1,对 InboundArray 使用索引 2 和 3。只需在其他条件下使用相同的对象accordingly.@Note首先检查 testArray 中的对象,然后再从索引中获取,否则它将崩溃。始终以小写字母开头的变量名称:)

if(firstCondition)
{
  [OutboundArray addObject:[testingArray objectAtIndex:0]];
  [OutboundArray addObject:[testingArray objectAtIndex:1]];
  [InboundArray addObject:[testingArray objectAtIndex:2]];
  [InboundArray addObject:[testingArray objectAtIndex:3]];
}

最新更新