2つの配列があります。一致するidcodeを取得しようとしています。しかし、一致するidcodeが見つかると配列が停止します。一致するすべてのIDコードを見つける方法はありますか?配列のループを持つループ
NSArray *IDCodeArray = @[@29, @30, @31, @45];
NSArray *dataArray = @[
@{
@"IDCode" : @5,
@"dateEnd" : @"04/08/2016",
@"dateStart" : @"04/08/2016"
},
@{
@"IDCode" : @30,
@"dateEnd" : @"04/09/2016",
@"dateStart" : @"04/09/2016"
},
@{
@"IDCode" : @55,
@"dateEnd" : @"04/10/2016",
@"dateStart" : @"04/10/2016"
},
@{
@"IDCode" : @29,
@"dateEnd" : @"04/11/2016",
@"dateStart" : @"04/11/2016"
},
@{
@"IDCode" : @30,
@"dateEnd" : @"04/11/2016",
@"dateStart" : @"04/11/2016"
}
];
NSMutableArray *resultArray = [[NSMutableArray alloc] init];
// loop through each object using fast enumeration
[IDCodeArray enumerateObjectsUsingBlock:^(NSNumber *idcode, NSUInteger idx, BOOL * _Nonnull stop) {
__block NSUInteger foundIndex = NSNotFound;
// loop through data array to find IDcode
foundIndex = [dataArray indexOfObjectPassingTest:^BOOL(NSDictionary *dictObject, NSUInteger idx, BOOL * _Nonnull stop) {
// stop the loop if found
NSUInteger IDCodeObject = [dictObject valueForKey:@"IDCode"];
return (IDCodeObject.integerValue == idcode.integerValue);
}];
// add object to result array if found
if(foundIndex != NSNotFound){
[resultArray addObject:[dataArray objectAtIndex:foundIndex]];
}
}];
NSLog(@"Result Array : %@", resultArray);
私resultArrayは、第二のIDCODE 30いくつかのマッチング結果を持っている可能性があり、この配列を取得していないので、それだけで最初のもので停止していないすべての一致を取得する必要があります。ありがとう
を2列iが取得データによって異なりますのでご注意下さい。 2つの配列は単なる例です。ありがとう。 –
あなたはそれを行うために 'NSPredicate'を使うことができます:NSArray * resultArray =' [dataArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@ "IDCode IN%@"、IDCodeArray]] '? – Larme