anotación de encargo, 'Acceso método getter desconocido'

votos
0

He hecho una clase MKAnnotation encargo, MapLocation. Estoy teniendo ningún ajuste o conseguir propiedades, excepto en este método para crear una MKAnnotationView problemas. Tengo que hacer aquí, ya que se supone que debe buscar un tipo de ubicación del índice de la anotación y seleccione una de una familia de imágenes de anotación personalizada para el annotationView.

Después de numerosos intentos de creación de captadores y definidores personalizados en MapLocation.h y .m, Herví abajo a donde no puedo incluso copiar la (obligatorio) captador, título, cambiarle el nombre a title2, y tratará de recuperar el valor de retorno . Este es mi código:

-(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation {
static NSString *placemarkIdentifier=@Map Location Identifier;
NSString *str1=annotation.title;
NSString *str2=annotation.title2;
if([annotation isKindOfClass:[MapLocation class]]) {
    MKAnnotationView *annotationView=(MKAnnotationView *)[theMapView dequeueReusableAnnotationViewWithIdentifier:placemarkIdentifier];
    if (annotationView==nil) {
        annotationView=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:placemarkIdentifier];
    }
    else
        annotationView.annotation=annotation;


    return annotationView;
}
return nil;

}

En la cuarta línea, el título se devuelve correctamente, pero la llamada de la línea 5 con el método de copiado produce el mensaje de error en el tema.

Me veía en la documentación de XCode, pero estoy probablemente no conseguir la forma de declarar que lo que este método lo ve. Es extraño que se ve el captador título, pero no la copia title2.

Publicado el 18/05/2010 a las 15:42
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Prueba a cambiar la línea de notación de puntos a lo siguiente:

NSString *str2=[annotation title2];

y el error debería desaparecer.

Lo que sucede es que el compilador se ha dicho que es una anotación MKAnnotation. El hecho de que usted sabe qué otros métodos que tiene es irrelevante; el compilador no es psíquica - todo lo que se sabe es que la anotación sigue el protocolo MKAnnotation, nada más. La razón por la que se ve el captador título es por culpa del título se define en MKAnnotation.

También puede solucionar este problema mediante el uso de un molde:

MapLocation *mapLocation = (MapLocation *)annotation;

Ahora, se puede decir

NSString *str2=mapLocation.title2;

porque se ha dicho que el compilador mapLocation es un obejct MapLocation.

Respondida el 18/05/2010 a las 15:48
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more