如何根据开关位置限制Array的负载

时间:2012-06-01 18:43:47

标签: ios xcode annotations switch-statement nsuserdefaults

我从plist和loop类别加载我的注释

NSMutableArray *annotations = [[NSMutableArray alloc]init];

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];

for(path in dict){

NSString *theCategory;

theCategory = [NSString stringWithFormat:@"%@", path];
NSLog(@"%@", path);

NSArray *ann = [dict objectForKey:theCategory];


for(int i = 0; i < [ann count]; i++) {


    NSString *coordinates = [[ann objectAtIndex:i] objectForKey:@"Coordinates"];

    double realLatitude = [[[coordinates componentsSeparatedByString:@","] objectAtIndex:1] doubleValue];
    double realLongitude = [[[coordinates componentsSeparatedByString:@","] objectAtIndex:0] doubleValue];

    MyAnnotation *myAnnotation = [[MyAnnotation alloc] init];
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.latitude = realLatitude;
    theCoordinate.longitude = realLongitude;

    myAnnotation.coordinate=CLLocationCoordinate2DMake(realLatitude,realLongitude);        
    myAnnotation.title = [[ann objectAtIndex:i] objectForKey:@"Name"];
    myAnnotation.subtitle = [[ann objectAtIndex:i] objectForKey:@"Address"];
    myAnnotation.icon = [[ann objectAtIndex:0] objectForKey:@"Icon"];


    [mapView addAnnotation:myAnnotation];
    [annotations addObject:myAnnotation];

}

}   

然后我的设置中有一个开关

- (IBAction)saveSwitch:(id)sender
{
    NSUserDefaults *defs1 = [NSUserDefaults standardUserDefaults];
    [defs1 setBool: blackSwitch.on forKey: @"blackKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

我需要通过此开关限制特定类别的注释显示。如果我循环分类,怎么做呢?

1 个答案:

答案 0 :(得分:0)

在第一个循环中,执行以下操作:

for(NSString *category in dict){
    if ([category isEqualToString:@"Whatever"]) {
        //continue?
        NSArray *ann = [dict objectForKey:category];
        BOOL blackKeyStatus = [[NSUserDefaults standardUserDefaults]boolForKey:@"blackKey"];

        if (blackKeyStatus) {
            //switch ON
            //act appropriatelyForOnValue
            //begin Loop 2 here?
        } else {
            //switch OFF
            //act appropriately
        }

    } else {
        //do something else?
    }

如果您需要测试特定条件,请执行必要的操作以确定是否符合该条件。