是否可以通过附加NSString的一部分来指定变量名称?

时间:2015-06-12 06:22:10

标签: ios objective-c

说我有数以千计的坐标。假设searchBarText是一个NSString。这是3:

if([searchBarText isEqual:@"1000"])
    {
        self.mapView.centerCoordinate = coordinate1000;
        [self.mapView selectAnnotation:point1000 animated:YES];
    }


    else if([searchBarText isEqual:@"1002"])
    {
        self.mapView.centerCoordinate = coordinate1002;
        [self.mapView selectAnnotation:point1002 animated:YES];
    }


    else if([searchBarText isEqual:@"1005"])
    {
        self.mapView.centerCoordinate = coordinate1005;
        [self.mapView selectAnnotation:point1005 animated:YES];
    }

是否有可能以某种方式将这个重复的代码浓缩成类似的东西:

self.mapView.centerCoordinate = coordinate(searchBarText);
[self.mapView selectAnnotation:point(searchBarText) animated:YES];

3 个答案:

答案 0 :(得分:3)

这是一种应该运作的方式

//@property (strong, nonatomic)NSString *coordinate1000;
_coordinate1000 = @"it's Working!";
    NSLog(@"Magic is : %@",[self valueForKey:[NSString stringWithFormat:@"coordinate%i",1000]]);

<强>买者: 对于您的问题,这不是推荐的解决方案,对于您的具体问题,请使用Array / Dictionary作为其他答案。

答案 1 :(得分:0)

作为替代方案,您可以将其存储在NSMutableDictionary中,其中键可以是您的变量名称,值可以是您的坐标。 虽然你可以拥有Mutable字典的通用名称。

答案 2 :(得分:-1)

制作此方法

-(NSString*) coordinate:(NSString*) searchBarText
{
return [@"coordinate" stringByAppendingString:searchBarText]
}

并使用此

self.mapView.centerCoordinate = [self coordinate:searchBarText];
[self.mapView selectAnnotation:[self coordinate:searchBarText] animated:YES];