не может добавить другой объект в массив, содержащий разные объекты - PullRequest
0 голосов
/ 20 июня 2011

Кто-нибудь, пожалуйста, помогите.

Я нуб, который только что создал массив, содержащий все мои объекты поликлиники. Теперь мне нужно добавить в этот массив пользовательский объект (объект PatientDetail). Но независимо от того, как я изменяю метод viewDidLoad, что-то просто кажется не совсем правильным ... я не могу заполнить все точки ... только когда я удаляю все коды, которые имеют дело с объектом пользователя, тогда это работает .. метод ниже и посоветуете? Мне нужно добавить объект PatientDetail и заполнить его остальными поликлиниками ...

спасибо за чтение = (

- (void)viewDidLoad {
        [super viewDidLoad];

        _annotation2 = [[NSMutableArray alloc] init];

    CLLocation *userLoc = _mapView.userLocation.location;
        CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@"user latitude = %f",userCoordinate.latitude);
    NSLog(@"user longitude = %f",userCoordinate.longitude);



   _annotations=[[NSMutableArray alloc] init];
       _listOfPolyClinics = [[NSMutableArray alloc] init];

PatientDetails *patientDetails = [[PatientDatabase database] 
                                  patientDetails:_nric];

for (PolyClinics *polyclinics in [[PatientDatabase database] 
                                  polyClinics]){
    [_listOfPolyClinics addObject:polyclinics];
}

[_listOfPolyClinics addObject:patientDetails];



for (PolyClinics *polyclinics1 in _listOfPolyClinics){
    MyAnnotation* myAnnotation=[[MyAnnotation alloc] init];

    if ([polyclinics1 isKindOfClass:[PatientDetails class]]){ 
        CLLocationCoordinate2D theCoordinate3;
        theCoordinate3.longitude = patientDetails.longitude;
        theCoordinate3.latitude = patientDetails.latitude;

        myAnnotation.coordinate = theCoordinate3;
        myAnnotation.title = _nric;
        myAnnotation.subtitle = [NSString        stringWithFormat:@"%i",patientDetails.category];

    }    
    else{
    CLLocationCoordinate2D theCoordinate;
    theCoordinate.longitude = polyclinics1.longtitude;
    NSLog(@"Halo");
    theCoordinate.latitude = polyclinics1.latitude;
    NSLog(@"bye");


    //myAnnotation.pinColor = MKPinAnnotationColorPurple;
    myAnnotation.coordinate = theCoordinate;
    myAnnotation.title = polyclinics1.name;
    myAnnotation.subtitle = [NSString stringWithFormat:@"%i",polyclinics1.telephone];
    }
    [_mapView addAnnotation:myAnnotation];
    [_annotation2 addObject:myAnnotation];

}

1 Ответ

0 голосов
/ 20 июня 2011

Поскольку в вашем массиве есть разные классы, вы не можете использовать for (PolyClinics *polyclinics1 in _listOfPolyClinics) для перебора массива. Вместо этого используйте id, затем спросите у объекта, к какому классу он относится, а затем приведите его к этому классу, если нужно.

Попробуйте изменить второй цикл for на

for (id polyclinics1 in _listOfPolyClinics){
    MyAnnotation* myAnnotation=[[MyAnnotation alloc] init];

    if ([polyclinics1 isKindOfClass:[PatientDetails class]]){ 
        CLLocationCoordinate2D theCoordinate3;
        theCoordinate3.longitude = patientDetails.longitude;
        theCoordinate3.latitude = patientDetails.latitude;

        myAnnotation.coordinate = theCoordinate3;
        myAnnotation.title = _nric;
        myAnnotation.subtitle = [NSString stringWithFormat:@"%i",patientDetails.category];
    } else {
        CLLocationCoordinate2D theCoordinate;
        PolyClinics *polyclinic = (PolyClinics *)polyclinics1;
        theCoordinate.longitude = polyclinic.longtitude;
        NSLog(@"Halo");
        theCoordinate.latitude = polyclinic.latitude;
        NSLog(@"bye");

        //myAnnotation.pinColor = MKPinAnnotationColorPurple;
        myAnnotation.coordinate = theCoordinate;
        myAnnotation.title = polyclinic.name;
        myAnnotation.subtitle = [NSString stringWithFormat:@"%i",polyclinic.telephone];
    }
    [_mapView addAnnotation:myAnnotation];
    [_annotation2 addObject:myAnnotation];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...