gpt4 book ai didi

ios - mapkit 中 NSMutableArray 的多个注解

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:50:02 25 4
gpt4 key购买 nike

我有一个从 ios 中的 sqlite 数据库填充的可变数组。我已经获得了可以正确加载和查看的注释。我的问题是如何编写一个循环来添加带有数组大小的注释。我尝试了以下代码并获取并显示数组中的最后一个条目

NSMutableArray *annotations=[[NSMutableArray alloc] init];
CLLocationCoordinate2D theCoordinate5;
MyAnnotation* myAnnotation5=[[MyAnnotation alloc] init];
for (int i = 0; i < _getDBInfo.count; i++) {

dbInfo *entity = [_getDBInfo objectAtIndex:i];

NSNumber *numlat=[[NSNumber alloc] initWithDouble:[entity.Latitude doubleValue]];
NSNumber *numlon=[[NSNumber alloc] initWithDouble:[entity.Longitude doubleValue]];
NSLog(@"%d",[_getDBInfo count]);
la=[numlat doubleValue];
lo=[numlon doubleValue];
theCoordinate5.latitude=la;
theCoordinate5.longitude=lo;

myAnnotation5.coordinate=theCoordinate5;
myAnnotation5.title=[NSString stringWithFormat:@"%@"entity.EntityNo];
myAnnotation5.subtitle=[NSString stringWithFormat:@"%@",entity.EntityName];
[mapView addAnnotation:myAnnotation5];
[annotations addObject:myAnnotation5];
}

我想我的问题是如何根据数组中的计数创建 View 注释对象并将其添加到我的 View 注释对象?

非常感谢任何帮助。

我是 iOS 和编程的新手,所以请保持温柔。

最佳答案

您只有一个 myAnnotation5 对象。当您设置它的coordinatetitle 等时,您是为那个实例设置它,您恰好多次将其添加到annotations .因此,annotations 中的每个条目都将具有您设置的最后一组属性 - 因为 annotations 中的每个条目实际上是相同对象。

为了解决这个问题,您需要在循环的每次迭代中重新创建您的 myAnnotation5 对象,即

for (int i = 0; i < _getDBInfo.count; i++) {
MyAnnotation* myAnnotation5=[[MyAnnotation alloc] init];
...
myAnnotation5.coordinate=theCoordinate5;
myAnnotation5.title=[NSString stringWithFormat:@"%@", entity.EntityNo];
myAnnotation5.subtitle=[NSString stringWithFormat:@"%@", entity.EntityName];
...
[mapView addAnnotation:myAnnotation5];
}

两个旁白:

  1. 我希望您使用 ARC 进行构建,否则您将左右泄漏内存。
  2. 由于 MKMapView 有一个 -annotations 属性,您可能没有什么理由保留自己的 annotations 数组 - 只需保留一个引用到 mapView

关于ios - mapkit 中 NSMutableArray 的多个注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com