Объект в массиве не распознается как имеющий "методы" - PullRequest
1 голос
/ 11 июня 2010

Некоторое время назад мое приложение работало, но после его полного и случайного удаления я попытался создать его с нуля.к сожалению, моя переписанная программа немного капризна;Кто-нибудь видит или знает возможные источники ошибок?Кроме того, мои операторы 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.также он жалуется на: before] на все строки оператора if.Я не вижу ошибок, а вы?

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Вы используете итератор, который предоставляет вам объекты типа id - вызов метода для них часто приводит в замешательство компилятор. Вы в состоянии привести их к известному типу?

Как for(MineType* mine in mines)?

И

[tempMine setTite:[mine mineName]];

Это опечатка? Я предполагаю, что вы будете вызывать этот метод setTitle.

0 голосов
/ 11 июня 2010

Я думаю, что изменение типа объекта mine объекта в цикле for на любой пользовательский класс с использованием свойств / методов latitudeInitial, longitudeInitial, mineName должен решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...