plist から作成された別の辞書の配列のフィルターとして使用したい文字列の配列があります。たとえば、次のような辞書の plist があるとします。
Key: Value:
car1 audi
car2 bmw
car3 bmw
car4 audi
car5 jaguar
私の文字列の配列は「アウディ、ジャガー」でした。「car1、car4、car5」を返す新しい配列を作成できるようにするには、どのようにコーディングすればよいでしょうか? これが理にかなっていることを願っています。さらに良いことに、このディクショナリを調べて、値に基づいてフィルター処理し、使用する新しいディクショナリの配列を作成するにはどうすればよいでしょうか。
コード:
-(void)plotStationAnnotations {
desiredDepartments = [[NSMutableArray alloc] init];
BOOL tvfrSwitchStatus = [[NSUserDefaults standardUserDefaults] boolForKey:@"tvfrSwitchStatus"];
BOOL hfdSwitchStatus = [[NSUserDefaults standardUserDefaults] boolForKey:@"hfdSwitchStatus"];
if (tvfrSwitchStatus) {
NSString *tvfr = @"TVF&R";
[desiredDepartments addObject:tvfr];
}
if (hfdSwitchStatus) {
NSString *hfd = @"HFD";
[desiredDepartments addObject:hfd];
}
NSLog(@"Array 1 = %@", desiredDepartments);
NSString *path = [[NSBundle mainBundle] pathForResource:@"stationAnnotations" ofType:@"plist"];
NSMutableArray *anns = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSMutableArray *newDictionaryArray = [NSMutableArray array];
for (NSDictionary *dictionary in anns) {
for (NSString *string in desiredDepartments) {
if ([dictionary allKeysForObject:string]) {
[newDictionaryArray addObject:dictionary];
break;
}
}
}
NSLog(@"Array = %@", keyMutableArray);
for (int i = 0; i < [keyMutableArray count]; i++) {
float realLatitude = [[[keyMutableArray objectAtIndex:i] objectForKey:@"latitude"] floatValue];
float realLongitude = [[[keyMutableArray objectAtIndex:i] objectForKey:@"longitude"] floatValue];
StationAnnotations *myAnnotation = [[StationAnnotations alloc] init];
CLLocationCoordinate2D theCoordinate;
theCoordinate.latitude = realLatitude;
theCoordinate.longitude = realLongitude;
myAnnotation.coordinate = theCoordinate;
myAnnotation.title = [[keyMutableArray objectAtIndex:i] objectForKey:@"station"];
myAnnotation.subtitle = [[keyMutableArray objectAtIndex:i] objectForKey:@"department"];
[mapView addAnnotation:myAnnotation];
}
}