我让我的应用程序工作了一段时间,但在完全且不小心删除它之后,我试图从正方形创建它。不幸的是,我改写的程序有点胡思乱想;有没有人看到或知道可能的错误来源?另外,我的if语句正在起作用。
-(void)loadAnnotations
{
CLLocationCoordinate2D workingCoordinate;
iProspectLiteAppDelegate *appDelegate = (iProspectLiteAppDelegate *)[[UIApplication sharedApplication] delegate];
NSMutableArray *mines =[[NSMutableArray alloc] initWithArray:(NSMutableArray *) appDelegate.mines];
BOOL gold = [[NSUserDefaults standardUserDefaults] boolForKey:@"goldControl"];
BOOL silver = [[NSUserDefaults standardUserDefaults] boolForKey:@"silverControl"];
BOOL copper = [[NSUserDefaults standardUserDefaults] boolForKey:@"copperControl"];
for(id mine in mines)
{
NSLog(@"in the loop");
workingCoordinate.latitude = [[mine latitudeInitial] doubleValue];
workingCoordinate.longitude = [[mine longitudeInitial] doubleValue];
iProspectLiteAnnotation *tempMine = [[iProspectLiteAnnotation alloc] initWithCoordinate:workingCoordinate];
[tempMine setTite:[mine mineName]];
if ([[mine commodity] isEqualToString:@"Gold"] && [gold == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeGold];
[mapView addAnnotation:tempMine];
}
if([[mine commodity] isEqualToString:@"Silver"] && [silver == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeSilver];
}
if([[mine commodity] isEqualToString:@"Copper"] && [copper == YES])
{
[tempMine setAnnotationType:iProspectLiteAnnotationTypeCopper];
}
}
[mines dealloc];
}
其中workingCoordinate.latitude = [[mine latitudeInitial] doubleValue],以及经度和[mine mineName],它表示“没有'-latitudeInitiallongitudeInitial'方法找到”或者是mineName / LongitudeInitial。 此外,它抱怨:在所有if语句行之前。我没有看到任何错误,是吗?
答案 0 :(得分:1)
您正在使用为您提供类型为id
的对象的迭代器 - 在这些对象上调用方法通常会使编译器感到困惑。你能把它们变成已知的类型吗?
赞for(MineType* mine in mines)
?
和
[tempMine setTite:[mine mineName]];
这是一个错字吗?我的猜测是你会调用那个方法setTitle
。
答案 1 :(得分:0)
我认为将for循环中的mine对象的对象类型更改为latitudeInitial,longitudeInitial,mineName属性/方法所具有的任何自定义类都应解决此问题。