gpt4 book ai didi

ios - 比较数组与不同对象类型的快速方法

转载 作者:行者123 更新时间:2023-11-29 03:04:32 25 4
gpt4 key购买 nike

我有一个包含从 coredata 获取结果的数组,它包含对象 myObject 和属性 myObjId

而且我的 MapView 上有 MKAnnotation,所以我有一个带有 Id 的自定义注释的数组:

self.mapView.annotations 返回具有 myId 属性的对象 CustomPinAnnotation

我想做的是在不重新加载 map 上现有图钉的情况下同步这两个结果。如何在 annotations 数组中查找不在 CoreData 的结果数组中的数据?

我写的方法是在添加注释之前进行检查:

-(BOOL)isAlreadyDisplayOnMap:(NSNumber*)pinId {
for(CustomPinAnnotation *an in self.mapView.annotations) {
if(![an isKindOfClass:[MKUserLocation class]]) {
if([an.favourId integerValue] == [pinId integerValue]) {
return YES;
}
}
}
return NO;
}

但这非常慢,应该是比较数组的更好方法。

最佳答案

您可能想尝试使用 block :

     __block BOOL alreadyDisplayed;
[self.mapView.annotations enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
CustomPinAnnotation *an = (CustomPinAnnotation *)obj;
if(![an isKindOfClass:[MKUserLocation class]]) {
if([an.favourId integerValue] == [pinId integerValue]) {
alreadyDisplayed = YES;
*stop = YES;
}
}
}];

关于ios - 比较数组与不同对象类型的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22934742/

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