>我有一个 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];
即对于第一个条件,只需对 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]];
}