Итак, у меня есть класс ArtPiece, который определяет несколько атрибутов общедоступных художественных произведений, таких как заголовок, описание и т. Д. Я храню объекты ArtPiece в массиве с именем mapAnnotations в appDelegate, поэтому они будут глобальными, и они будут помещены в Карта как аннотации. Когда область карты изменяется, я делаю URL-вызов, чтобы получить информацию о artpieces, которые вошли в область, создаю объекты artPiece из проанализированной информации, затем добавляю их в массив с именем items в классе с именем «ArtsXMLParser». Я хочу, чтобы mapAnnotations содержала все фрагменты, которые находятся на карте, но когда регион изменяется, я хочу добавить только фрагменты из "элементов", которых еще нет в mapAnnotations, чтобы не размещать дубликаты аннотаций на карте. Вот метод в третьем классе, который управляет аннотациями. Кажется, что все работает, но оператор if с containsObject: вызывается каждый раз, поэтому, очевидно, artpieces никогда не совпадают, хотя, когда они регистрируются, они имеют одинаковую информацию. Есть ли лучший способ проверить, имеют ли два массива объект с одинаковыми общими атрибутами?
-(void)requestFinished:(ASIHTTPRequest *)request{
//NSLog(@"requestFinished:");
//NSLog(@"%@", [request responseString]);
mainDelegate = (PublicArtAppDelegate*)[[UIApplication sharedApplication]delegate];
ArtsXMLParser *parser = [[ArtsXMLParser alloc] init];
[parser parseXMLWithData:[request responseData] parseError:nil];
newAnnots = [[NSMutableArray alloc] init];
for (int xy = 0; xy<[parser items].count; xy++)
{
if (![mainDelegate.mapAnnotations containsObject:[[parser items]objectAtIndex:xy]])
{
NSLog(@"%@", [[parser items]objectAtIndex:xy]);
[self.newAnnots addObject:[[parser items]objectAtIndex:xy]];
NSLog(@"%@", [newAnnots objectAtIndex:xy]);
[mainDelegate.mapAnnotations addObject:[[parser items]objectAtIndex:xy]];
NSLog(@"%@", [mainDelegate.mapAnnotations objectAtIndex:xy]);
}
}
//mainDelegate.mapAnnotations = [parser items];
[parser release];
[self.mapView addAnnotations:self.newAnnots];
[newAnnots removeAllObjects];
//[mainDelegate.mapAnnotations addObject:newAnnots];
[newAnnots release];
if (mainDelegate.mapAnnotations==0) {
UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:nil message:@"No art work match your search term" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert2 show];
[alert2 release];
}
}
Я буду рад разъяснить что-то, что не было хорошо объяснено. Спасибо за любую помощь!