Array中的对象无法识别为具有“方法”

时间:2010-06-11 04:04:10

标签: iphone objective-c object nsmutablearray

我让我的应用程序工作了一段时间,但在完全且不小心删除它之后,我试图从正方形创建它。不幸的是,我改写的程序有点胡思乱想;有没有人看到或知道可能的错误来源?另外,我的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语句行之前。我没有看到任何错误,是吗?

2 个答案:

答案 0 :(得分:1)

您正在使用为您提供类型为id的对象的迭代器 - 在这些对象上调用方法通常会使编译器感到困惑。你能把它们变成已知的类型吗?

for(MineType* mine in mines)

[tempMine setTite:[mine mineName]];
这是一个错字吗?我的猜测是你会调用那个方法setTitle

答案 1 :(得分:0)

我认为将for循环中的mine对象的对象类型更改为latitudeInitial,longitudeInitial,mineName属性/方法所具有的任何自定义类都应解决此问题。