Во-первых, эти строки пытаются присвоить значение вызову метода, что говорит ошибка, которую вы не можете сделать:
[pin title] = storeName;
[pin subtitle] = storeAddress;
[pin coordinate] = region.center;
Они должны быть такими:
pin.title = storeName;
pin.subtitle = storeAddress;
pin.coordinate = region.center;
Однако протокол MKAnnotation
определяет свойства как readonly
. Чтобы иметь возможность установить их, объявите их в своем классе Annotation
как:
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
и добавьте для них строки @synthesize
в Annotation.m
.
Однако, если вам нужны только свойства title
, subtitle
и coordinate
, вам не нужно создавать собственный класс для реализации MKAnnotation
. Вместо этого просто используйте встроенный класс MKPointAnnotation
, который уже реализует эти свойства как устанавливаемые:
MKPointAnnotation *pin = [[MKPointAnnotation alloc] init];
Как указывает @macbirdie, другой вариант - просто заставить существующий класс Store
(если он у вас есть) реализовать протокол MKAnnotation
.