0

不知道我哪里错了。我有一个最多包含 3 个对象的数组。我想检查是否有任何数组对象超过 0,如果是,请将它们格式化为NSString. 如果没有,我想在索引 0 处包含对象。

朝着正确的方向前进会很棒!

// add annotation
MKPointAnnotation *point = [MKPointAnnotation new];
point.coordinate = (CLLocationCoordinate2D){[self.eventPlan.location_lat doubleValue], [self.eventPlan.location_lng doubleValue]};
NSArray *locationA = [self.eventPlan.location_address componentsSeparatedByString:@", "];
point.title = locationA[0];

if ([locationA containsObject:locationA[1]]) {
    point.subtitle = [NSString stringWithFormat:@"%@, %@", locationA[1], locationA[2]];
} else {
    point.subtitle = [NSString stringWithFormat:@"%@", locationA[1]];
}

[mapView addAnnotation:point];
4

1 回答 1

0

如果您知道数组中最多只能有 3 条记录,您可以做一些天真的事情,例如:

switch([locationA count])
{
    case 0:
        ...
        break;
    case 1:
        ...
        break
    case 2:
        ...
        break;
    case 3:
        ...
        break;
}

然后根据有多少做你需要的。

在我看来,您的代码只是在“,”的第一个实例中破坏了字符串。另一种简单的方法是找到第一个分隔符的范围,然后将字符串剪辑成两个子字符串。

NSRange range = [string rangeOfString:@", "];
int locationInString = range.location;
if(locationInString != NSNotFound)
{
    point.title = [string substringToIndex:locationInString];
    point.subtitle = [string substringFromIndex:locationInString + 2];
}
else
    point.title = string;

有了这个,如果 subtitle 是 nil 那么你知道你没有字符串的那部分。

于 2013-12-20T14:34:01.343 回答