对于每次错过最后一个对象的语句

时间:2012-10-03 06:09:55

标签: objective-c ios for-loop

我使用以下代码尝试将对象放入数组中。我需要该数组中特定数量的对象 - 另一个数组的计数(即36)。

NSArray *sortedKeys = [[self.titlearray objectForKey:@"Title"] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
[self.titlearray setObject:sortedKeys forKey:@"Title"];

NSLog(@"SORTED KEYS COUNT: %i", sortedKeys.count);

for (NSObject *string in sortedKeys) {

    NSLog(@"Adding object number %i", [sortedKeys indexOfObject:string]);

    NSString *object = [[self.titlearray objectForKey:@"Title"] objectAtIndex:[sortedKeys indexOfObject:string]];

    NSArray *latlong = [[self.locationarray objectAtIndex:[[self.titlearray objectForKey:@"Title"] indexOfObject:object]] componentsSeparatedByString:@", "];
    CLLocation *firstLocation = [[CLLocation alloc] initWithLatitude:[[latlong objectAtIndex:0] doubleValue] longitude:[[latlong objectAtIndex:1] doubleValue]];
    CLLocation *secondLocation = [[CLLocation alloc] initWithLatitude:self.map.userLocation.coordinate.latitude longitude:self.map.userLocation.coordinate.longitude];
    CLLocationDistance distance = [secondLocation distanceFromLocation:firstLocation];
    float value = distance / 1000;
    NSString *distancevalue = [NSString stringWithFormat:@"%.2f", value];

    if(self.distances.count < [sortedKeys indexOfObject:object])
    [self.distances addObject:distancevalue];

    else if([sortedKeys indexOfObject:object] < self.distances.count && [self.distances objectAtIndex:[sortedKeys indexOfObject:object]])
    [self.distances replaceObjectAtIndex:[sortedKeys indexOfObject:object] withObject:distancevalue];

}

第一个NSLog显示“36”,但是当调用for语句时,“添加对象编号36”不会显示任何日志。它只会达到35级。这很奇怪,我不确定为什么会发生这种情况。

2 个答案:

答案 0 :(得分:1)

由于在数组中,对象索引计数从0 开始,而您的最后一个对象索引 35 ,其总计将是 36 对象。

例如,如果数组由 X个对象组成,则其索引从0开始,以X-1结尾

答案 1 :(得分:1)

数组的起始索引从 0到n条记录

因此它显示记录计数完全在迭代时从0 开始到n记录。

你有36条记录但是在迭代时它从0到35开始。