Почему вы пытаетесь изменить структуру? Вы должны быть определяющим itemIDкак свойства или экземпляра переменной (или оба) в myAnnotation.h. Вы говорите , что currentAnnotation.itemTag
не работает; для того , чтобы работать, вы должны быть itemTagопределены как свойство любого класс currentAnnotationпринадлежит.
Изменение заголовка файла для рамок не будет перекомпилировать его, так что вы не сможете получить, чтобы работать.
EDIT: Вот пример.
В MyAnnotation.h:
@interface MyAnnotation : NSObject <MKAnnotation> {
NSString *itemID;
// Other instance variables
}
@property (nonatomic, retain) NSString *itemID;
// Class and instance methods.
@end
В MyAnnotation.m:
@implementation MyAnnotation
@synthesize itemID;
// Your code here.
@end
@propertyВызов определяет свойство и @synthesizeвызов будет создавать сеттер и добытчик для вас (методы для установки и извлечения значения itemID). В MyAnnotation.m, вы можете использовать self.itemIDили [self itemID]получить значение itemID, и вы можете использовать self.itemID = @"something"или [self setItemID:@"Something"]установить значение.
EDIT 2:
Когда вы получите currentAnnotation, если компилятор не знает , что аннотация является экземпляром вашего класса MyAnnotation, он не будет знать о itemID. Итак, сначала убедитесь , что вы включили эту строку в начале вашего .mфайла:
#import MyAnnotation.h
Это Виль гарантировать , что компилятор знает о классе. При использовании currentAnnotation, вы приводите его как пример MyAnnotationвот так:
(MyAnnotation*)currentAnnotation
Это должно успокоить вниз предупреждение.